Minor fix for virtio: code wanting to access the fields inside an skb
frag should use the skb_frag_*() helpers, instead of accessing the
fields directly. This allows for extensions where the underlying
memory is not a page.
Signed-off-by: Mina Almasry <almasrymina@google.com>
---
v2:
- Also fix skb_frag_off() + skb_frag_size() (David)
- Did not apply the reviewed-by from Stefano since the patch changed
relatively much.
---
net/vmw_vsock/virtio_transport.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/net/vmw_vsock/virtio_transport.c b/net/vmw_vsock/virtio_transport.c
index f495b9e5186b..1748268e0694 100644
--- a/net/vmw_vsock/virtio_transport.c
+++ b/net/vmw_vsock/virtio_transport.c
@@ -153,10 +153,10 @@ virtio_transport_send_pkt_work(struct work_struct *work)
* 'virt_to_phys()' later to fill the buffer descriptor.
* We don't touch memory at "virtual" address of this page.
*/
- va = page_to_virt(skb_frag->bv_page);
+ va = page_to_virt(skb_frag_page(skb_frag));
sg_init_one(sgs[out_sg],
- va + skb_frag->bv_offset,
- skb_frag->bv_len);
+ va + skb_frag_off(skb_frag),
+ skb_frag_size(skb_frag));
out_sg++;
}
}
--
2.43.0.472.g3155946c3a-goog
On Wed, Dec 20, 2023 at 01:45:00PM -0800, Mina Almasry wrote: >Minor fix for virtio: code wanting to access the fields inside an skb >frag should use the skb_frag_*() helpers, instead of accessing the >fields directly. This allows for extensions where the underlying >memory is not a page. > >Signed-off-by: Mina Almasry <almasrymina@google.com> > >--- > >v2: > >- Also fix skb_frag_off() + skb_frag_size() (David) >- Did not apply the reviewed-by from Stefano since the patch changed >relatively much. Sorry for the delay, I was off. LGTM! Acked-by: Stefano Garzarella <sgarzare@redhat.com> Possibly we can also send this patch alone if the series is still under discussion because it's definitely an improvement to the current code. Thanks, Stefano > >--- > net/vmw_vsock/virtio_transport.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > >diff --git a/net/vmw_vsock/virtio_transport.c b/net/vmw_vsock/virtio_transport.c >index f495b9e5186b..1748268e0694 100644 >--- a/net/vmw_vsock/virtio_transport.c >+++ b/net/vmw_vsock/virtio_transport.c >@@ -153,10 +153,10 @@ virtio_transport_send_pkt_work(struct work_struct *work) > * 'virt_to_phys()' later to fill the buffer descriptor. > * We don't touch memory at "virtual" address of this page. > */ >- va = page_to_virt(skb_frag->bv_page); >+ va = page_to_virt(skb_frag_page(skb_frag)); > sg_init_one(sgs[out_sg], >- va + skb_frag->bv_offset, >- skb_frag->bv_len); >+ va + skb_frag_off(skb_frag), >+ skb_frag_size(skb_frag)); > out_sg++; > } > } >-- >2.43.0.472.g3155946c3a-goog >
On Wed, Dec 20, 2023 at 1:45 PM Mina Almasry <almasrymina@google.com> wrote: > > Minor fix for virtio: code wanting to access the fields inside an skb > frag should use the skb_frag_*() helpers, instead of accessing the > fields directly. This allows for extensions where the underlying > memory is not a page. > > Signed-off-by: Mina Almasry <almasrymina@google.com> Reviewed-by: Shakeel Butt <shakeelb@google.com>
Mina Almasry wrote: > Minor fix for virtio: code wanting to access the fields inside an skb > frag should use the skb_frag_*() helpers, instead of accessing the > fields directly. This allows for extensions where the underlying > memory is not a page. > > Signed-off-by: Mina Almasry <almasrymina@google.com> > > --- > > v2: > > - Also fix skb_frag_off() + skb_frag_size() (David) > - Did not apply the reviewed-by from Stefano since the patch changed > relatively much. > > --- > net/vmw_vsock/virtio_transport.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/net/vmw_vsock/virtio_transport.c b/net/vmw_vsock/virtio_transport.c > index f495b9e5186b..1748268e0694 100644 > --- a/net/vmw_vsock/virtio_transport.c > +++ b/net/vmw_vsock/virtio_transport.c > @@ -153,10 +153,10 @@ virtio_transport_send_pkt_work(struct work_struct *work) > * 'virt_to_phys()' later to fill the buffer descriptor. > * We don't touch memory at "virtual" address of this page. > */ > - va = page_to_virt(skb_frag->bv_page); > + va = page_to_virt(skb_frag_page(skb_frag)); > sg_init_one(sgs[out_sg], > - va + skb_frag->bv_offset, > - skb_frag->bv_len); > + va + skb_frag_off(skb_frag), > + skb_frag_size(skb_frag)); > out_sg++; > } > } If there are requests for further revision in the series, can send this virtio cleanup on its own to get it off the stack. > -- > 2.43.0.472.g3155946c3a-goog >
© 2016 - 2025 Red Hat, Inc.