* Re: [PATCH net-next v3 3/3] net: add netmem_ref to skb_frag_t
2023-12-20 21:45 ` [PATCH net-next v3 3/3] net: add netmem_ref to skb_frag_t Mina Almasry
@ 2023-12-21 17:16 ` Simon Horman
2023-12-21 17:18 ` Willem de Bruijn
` (4 subsequent siblings)
5 siblings, 0 replies; 19+ messages in thread
From: Simon Horman @ 2023-12-21 17:16 UTC (permalink / raw)
To: Mina Almasry
Cc: linux-kernel, netdev, kvm, virtualization, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Stefan Hajnoczi,
Stefano Garzarella, David Howells, Jason Gunthorpe,
Christian König, Shakeel Butt, Yunsheng Lin,
Willem de Bruijn
On Wed, Dec 20, 2023 at 01:45:02PM -0800, Mina Almasry wrote:
> Use netmem_ref instead of page in skb_frag_t. Currently netmem_ref
> is always a struct page underneath, but the abstraction allows efforts
> to add support for skb frags not backed by pages.
>
> There is unfortunately 1 instance where the skb_frag_t is assumed to be
> a bio_vec in kcm. For this case, add a debug assert that the skb frag is
> indeed backed by a page, and do a cast.
>
> Add skb[_frag]_fill_netmem_*() and skb_add_rx_frag_netmem() helpers so
> that the API can be used to create netmem skbs.
>
> Signed-off-by: Mina Almasry <almasrymina@google.com>
...
> diff --git a/net/kcm/kcmsock.c b/net/kcm/kcmsock.c
> index 65d1f6755f98..3180a54b2c68 100644
> --- a/net/kcm/kcmsock.c
> +++ b/net/kcm/kcmsock.c
> @@ -636,9 +636,15 @@ static int kcm_write_msgs(struct kcm_sock *kcm)
> for (i = 0; i < skb_shinfo(skb)->nr_frags; i++)
> msize += skb_shinfo(skb)->frags[i].bv_len;
>
> + /* The cast to struct bio_vec* here assumes the frags are
> + * struct page based. WARN if there is no page in this skb.
> + */
> + DEBUG_NET_WARN_ON_ONCE(
> + !skb_frag_page(&skb_shinfo(skb)->frags[0]));
> +
> iov_iter_bvec(&msg.msg_iter, ITER_SOURCE,
> - skb_shinfo(skb)->frags, skb_shinfo(skb)->nr_frags,
> - msize);
> + (const struct bio_vec *)skb_shinfo(skb)->frags,
> + skb_shinfo(skb)->nr_frags, msize);
> iov_iter_advance(&msg.msg_iter, txm->frag_offset);
>
> do {
Hi Mina,
something isn't quite right here.
...//kcmsock.c:637:39: error: no member named 'bv_len' in 'struct skb_frag'
637 | msize += skb_shinfo(skb)->frags[i].bv_len;
| ~~~~~~~~~~~~~~~~~~~~~~~~~ ^
--
pw-bot: changes-requested
^ permalink raw reply [flat|nested] 19+ messages in thread* Re: [PATCH net-next v3 3/3] net: add netmem_ref to skb_frag_t
2023-12-20 21:45 ` [PATCH net-next v3 3/3] net: add netmem_ref to skb_frag_t Mina Almasry
2023-12-21 17:16 ` Simon Horman
@ 2023-12-21 17:18 ` Willem de Bruijn
2023-12-21 23:27 ` Shakeel Butt
` (3 subsequent siblings)
5 siblings, 0 replies; 19+ messages in thread
From: Willem de Bruijn @ 2023-12-21 17:18 UTC (permalink / raw)
To: Mina Almasry, linux-kernel, netdev, kvm, virtualization
Cc: Mina Almasry, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Stefan Hajnoczi, Stefano Garzarella, David Howells,
Jason Gunthorpe, Christian König, Shakeel Butt, Yunsheng Lin,
Willem de Bruijn
Mina Almasry wrote:
> Use netmem_ref instead of page in skb_frag_t. Currently netmem_ref
> is always a struct page underneath, but the abstraction allows efforts
> to add support for skb frags not backed by pages.
>
> There is unfortunately 1 instance where the skb_frag_t is assumed to be
> a bio_vec in kcm. For this case, add a debug assert that the skb frag is
> indeed backed by a page, and do a cast.
>
> Add skb[_frag]_fill_netmem_*() and skb_add_rx_frag_netmem() helpers so
> that the API can be used to create netmem skbs.
>
> Signed-off-by: Mina Almasry <almasrymina@google.com>
>
> ---
>
> v3;
> - Renamed the fields in skb_frag_t.
>
> v2:
> - Add skb frag filling helpers.
>
> ---
> include/linux/skbuff.h | 92 +++++++++++++++++++++++++++++-------------
> net/core/skbuff.c | 22 +++++++---
> net/kcm/kcmsock.c | 10 ++++-
> 3 files changed, 89 insertions(+), 35 deletions(-)
>
> diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
> index 7ce38874dbd1..729c95e97be1 100644
> --- a/include/linux/skbuff.h
> +++ b/include/linux/skbuff.h
> @@ -37,6 +37,7 @@
> #endif
> #include <net/net_debug.h>
> #include <net/dropreason-core.h>
> +#include <net/netmem.h>
>
> /**
> * DOC: skb checksums
> @@ -359,7 +360,11 @@ extern int sysctl_max_skb_frags;
> */
> #define GSO_BY_FRAGS 0xFFFF
>
> -typedef struct bio_vec skb_frag_t;
> +typedef struct skb_frag {
> + netmem_ref netmem;
> + unsigned int len;
> + unsigned int offset;
> +} skb_frag_t;
>
> /**
> * skb_frag_size() - Returns the size of a skb fragment
> @@ -367,7 +372,7 @@ typedef struct bio_vec skb_frag_t;
> */
> static inline unsigned int skb_frag_size(const skb_frag_t *frag)
> {
> - return frag->bv_len;
> + return frag->len;
> }
>
> /**
> @@ -377,7 +382,7 @@ static inline unsigned int skb_frag_size(const skb_frag_t *frag)
> */
> static inline void skb_frag_size_set(skb_frag_t *frag, unsigned int size)
> {
> - frag->bv_len = size;
> + frag->len = size;
> }
>
> /**
> @@ -387,7 +392,7 @@ static inline void skb_frag_size_set(skb_frag_t *frag, unsigned int size)
> */
> static inline void skb_frag_size_add(skb_frag_t *frag, int delta)
> {
> - frag->bv_len += delta;
> + frag->len += delta;
> }
>
> /**
> @@ -397,7 +402,7 @@ static inline void skb_frag_size_add(skb_frag_t *frag, int delta)
> */
> static inline void skb_frag_size_sub(skb_frag_t *frag, int delta)
> {
> - frag->bv_len -= delta;
> + frag->len -= delta;
> }
>
> /**
> @@ -417,7 +422,7 @@ static inline bool skb_frag_must_loop(struct page *p)
> * skb_frag_foreach_page - loop over pages in a fragment
> *
> * @f: skb frag to operate on
> - * @f_off: offset from start of f->bv_page
> + * @f_off: offset from start of f->netmem
> * @f_len: length from f_off to loop over
> * @p: (temp var) current page
> * @p_off: (temp var) offset from start of current page,
> @@ -2431,22 +2436,37 @@ static inline unsigned int skb_pagelen(const struct sk_buff *skb)
> return skb_headlen(skb) + __skb_pagelen(skb);
> }
>
> +static inline void skb_frag_fill_netmem_desc(skb_frag_t *frag,
> + netmem_ref netmem, int off,
> + int size)
> +{
> + frag->netmem = netmem;
> + frag->offset = off;
> + skb_frag_size_set(frag, size);
> +}
> +
> static inline void skb_frag_fill_page_desc(skb_frag_t *frag,
> struct page *page,
> int off, int size)
> {
> - frag->bv_page = page;
> - frag->bv_offset = off;
> - skb_frag_size_set(frag, size);
> + skb_frag_fill_netmem_desc(frag, page_to_netmem(page), off, size);
> +}
> +
> +static inline void __skb_fill_netmem_desc_noacc(struct skb_shared_info *shinfo,
> + int i, netmem_ref netmem,
> + int off, int size)
> +{
> + skb_frag_t *frag = &shinfo->frags[i];
> +
> + skb_frag_fill_netmem_desc(frag, netmem, off, size);
> }
>
> static inline void __skb_fill_page_desc_noacc(struct skb_shared_info *shinfo,
> int i, struct page *page,
> int off, int size)
> {
> - skb_frag_t *frag = &shinfo->frags[i];
> -
> - skb_frag_fill_page_desc(frag, page, off, size);
> + __skb_fill_netmem_desc_noacc(shinfo, i, page_to_netmem(page), off,
> + size);
> }
>
> /**
> @@ -2462,10 +2482,10 @@ static inline void skb_len_add(struct sk_buff *skb, int delta)
> }
>
> /**
> - * __skb_fill_page_desc - initialise a paged fragment in an skb
> + * __skb_fill_netmem_desc - initialise a fragment in an skb
> * @skb: buffer containing fragment to be initialised
> - * @i: paged fragment index to initialise
> - * @page: the page to use for this fragment
> + * @i: fragment index to initialise
> + * @netmem: the netmem to use for this fragment
> * @off: the offset to the data with @page
> * @size: the length of the data
> *
> @@ -2474,10 +2494,13 @@ static inline void skb_len_add(struct sk_buff *skb, int delta)
> *
> * Does not take any additional reference on the fragment.
> */
> -static inline void __skb_fill_page_desc(struct sk_buff *skb, int i,
> - struct page *page, int off, int size)
> +static inline void __skb_fill_netmem_desc(struct sk_buff *skb, int i,
> + netmem_ref netmem, int off,
> + int size)
> {
> - __skb_fill_page_desc_noacc(skb_shinfo(skb), i, page, off, size);
> + struct page *page = netmem_to_page(netmem);
> +
> + __skb_fill_netmem_desc_noacc(skb_shinfo(skb), i, netmem, off, size);
>
> /* Propagate page pfmemalloc to the skb if we can. The problem is
> * that not all callers have unique ownership of the page but rely
> @@ -2485,7 +2508,21 @@ static inline void __skb_fill_page_desc(struct sk_buff *skb, int i,
> */
> page = compound_head(page);
> if (page_is_pfmemalloc(page))
> - skb->pfmemalloc = true;
> + skb->pfmemalloc = true;
> +}
> +
> +static inline void __skb_fill_page_desc(struct sk_buff *skb, int i,
> + struct page *page, int off, int size)
> +{
> + __skb_fill_netmem_desc(skb, i, page_to_netmem(page), off, size);
> +}
> +
> +static inline void skb_fill_netmem_desc(struct sk_buff *skb, int i,
> + netmem_ref netmem, int off,
> + int size)
> +{
> + __skb_fill_netmem_desc(skb, i, netmem, off, size);
> + skb_shinfo(skb)->nr_frags = i + 1;
> }
>
> /**
> @@ -2505,8 +2542,7 @@ static inline void __skb_fill_page_desc(struct sk_buff *skb, int i,
> static inline void skb_fill_page_desc(struct sk_buff *skb, int i,
> struct page *page, int off, int size)
> {
> - __skb_fill_page_desc(skb, i, page, off, size);
> - skb_shinfo(skb)->nr_frags = i + 1;
> + skb_fill_netmem_desc(skb, i, page_to_netmem(page), off, size);
> }
>
> /**
> @@ -2532,6 +2568,8 @@ static inline void skb_fill_page_desc_noacc(struct sk_buff *skb, int i,
>
> void skb_add_rx_frag(struct sk_buff *skb, int i, struct page *page, int off,
> int size, unsigned int truesize);
> +void skb_add_rx_frag_netmem(struct sk_buff *skb, int i, netmem_ref netmem,
> + int off, int size, unsigned int truesize);
>
> void skb_coalesce_rx_frag(struct sk_buff *skb, int i, int size,
> unsigned int truesize);
> @@ -3380,7 +3418,7 @@ static inline void skb_propagate_pfmemalloc(const struct page *page,
> */
> static inline unsigned int skb_frag_off(const skb_frag_t *frag)
> {
> - return frag->bv_offset;
> + return frag->offset;
> }
>
> /**
> @@ -3390,7 +3428,7 @@ static inline unsigned int skb_frag_off(const skb_frag_t *frag)
> */
> static inline void skb_frag_off_add(skb_frag_t *frag, int delta)
> {
> - frag->bv_offset += delta;
> + frag->offset += delta;
> }
>
> /**
> @@ -3400,7 +3438,7 @@ static inline void skb_frag_off_add(skb_frag_t *frag, int delta)
> */
> static inline void skb_frag_off_set(skb_frag_t *frag, unsigned int offset)
> {
> - frag->bv_offset = offset;
> + frag->offset = offset;
> }
>
> /**
> @@ -3411,7 +3449,7 @@ static inline void skb_frag_off_set(skb_frag_t *frag, unsigned int offset)
> static inline void skb_frag_off_copy(skb_frag_t *fragto,
> const skb_frag_t *fragfrom)
> {
> - fragto->bv_offset = fragfrom->bv_offset;
> + fragto->offset = fragfrom->offset;
> }
>
> /**
> @@ -3422,7 +3460,7 @@ static inline void skb_frag_off_copy(skb_frag_t *fragto,
> */
> static inline struct page *skb_frag_page(const skb_frag_t *frag)
> {
> - return frag->bv_page;
> + return netmem_to_page(frag->netmem);
> }
>
> /**
> @@ -3526,7 +3564,7 @@ static inline void *skb_frag_address_safe(const skb_frag_t *frag)
> static inline void skb_frag_page_copy(skb_frag_t *fragto,
> const skb_frag_t *fragfrom)
> {
> - fragto->bv_page = fragfrom->bv_page;
> + fragto->netmem = fragfrom->netmem;
> }
>
> bool skb_page_frag_refill(unsigned int sz, struct page_frag *pfrag, gfp_t prio);
> diff --git a/net/core/skbuff.c b/net/core/skbuff.c
> index 4d4b11b0a83d..8b55e927bbe9 100644
> --- a/net/core/skbuff.c
> +++ b/net/core/skbuff.c
> @@ -845,16 +845,24 @@ struct sk_buff *__napi_alloc_skb(struct napi_struct *napi, unsigned int len,
> }
> EXPORT_SYMBOL(__napi_alloc_skb);
>
> -void skb_add_rx_frag(struct sk_buff *skb, int i, struct page *page, int off,
> - int size, unsigned int truesize)
> +void skb_add_rx_frag_netmem(struct sk_buff *skb, int i, netmem_ref netmem,
> + int off, int size, unsigned int truesize)
> {
> DEBUG_NET_WARN_ON_ONCE(size > truesize);
>
> - skb_fill_page_desc(skb, i, page, off, size);
> + skb_fill_netmem_desc(skb, i, netmem, off, size);
> skb->len += size;
> skb->data_len += size;
> skb->truesize += truesize;
> }
> +EXPORT_SYMBOL(skb_add_rx_frag_netmem);
> +
> +void skb_add_rx_frag(struct sk_buff *skb, int i, struct page *page, int off,
> + int size, unsigned int truesize)
> +{
> + skb_add_rx_frag_netmem(skb, i, page_to_netmem(page), off, size,
> + truesize);
> +}
> EXPORT_SYMBOL(skb_add_rx_frag);
>
> void skb_coalesce_rx_frag(struct sk_buff *skb, int i, int size,
> @@ -1904,10 +1912,11 @@ int skb_copy_ubufs(struct sk_buff *skb, gfp_t gfp_mask)
>
> /* skb frags point to kernel buffers */
> for (i = 0; i < new_frags - 1; i++) {
> - __skb_fill_page_desc(skb, i, head, 0, psize);
> + __skb_fill_netmem_desc(skb, i, page_to_netmem(head), 0, psize);
> head = (struct page *)page_private(head);
> }
> - __skb_fill_page_desc(skb, new_frags - 1, head, 0, d_off);
> + __skb_fill_netmem_desc(skb, new_frags - 1, page_to_netmem(head), 0,
> + d_off);
> skb_shinfo(skb)->nr_frags = new_frags;
>
> release:
> @@ -3645,7 +3654,8 @@ skb_zerocopy(struct sk_buff *to, struct sk_buff *from, int len, int hlen)
> if (plen) {
> page = virt_to_head_page(from->head);
> offset = from->data - (unsigned char *)page_address(page);
> - __skb_fill_page_desc(to, 0, page, offset, plen);
> + __skb_fill_netmem_desc(to, 0, page_to_netmem(page),
> + offset, plen);
> get_page(page);
> j = 1;
> len -= plen;
> diff --git a/net/kcm/kcmsock.c b/net/kcm/kcmsock.c
> index 65d1f6755f98..3180a54b2c68 100644
> --- a/net/kcm/kcmsock.c
> +++ b/net/kcm/kcmsock.c
> @@ -636,9 +636,15 @@ static int kcm_write_msgs(struct kcm_sock *kcm)
> for (i = 0; i < skb_shinfo(skb)->nr_frags; i++)
> msize += skb_shinfo(skb)->frags[i].bv_len;
>
> + /* The cast to struct bio_vec* here assumes the frags are
> + * struct page based. WARN if there is no page in this skb.
> + */
> + DEBUG_NET_WARN_ON_ONCE(
> + !skb_frag_page(&skb_shinfo(skb)->frags[0]));
> +
It would be unsafe to continue the operation in this case. Even though
we should never get here, test and exit in all codepaths, similar to
other test above?
if (WARN_ON(!skb_shinfo(skb)->nr_frags)) {
ret = -EINVAL;
goto out;
}
> iov_iter_bvec(&msg.msg_iter, ITER_SOURCE,
> - skb_shinfo(skb)->frags, skb_shinfo(skb)->nr_frags,
> - msize);
> + (const struct bio_vec *)skb_shinfo(skb)->frags,
> + skb_shinfo(skb)->nr_frags, msize);
> iov_iter_advance(&msg.msg_iter, txm->frag_offset);
>
> do {
> --
> 2.43.0.472.g3155946c3a-goog
>
^ permalink raw reply [flat|nested] 19+ messages in thread* Re: [PATCH net-next v3 3/3] net: add netmem_ref to skb_frag_t
2023-12-20 21:45 ` [PATCH net-next v3 3/3] net: add netmem_ref to skb_frag_t Mina Almasry
2023-12-21 17:16 ` Simon Horman
2023-12-21 17:18 ` Willem de Bruijn
@ 2023-12-21 23:27 ` Shakeel Butt
2023-12-22 20:10 ` kernel test robot
` (2 subsequent siblings)
5 siblings, 0 replies; 19+ messages in thread
From: Shakeel Butt @ 2023-12-21 23:27 UTC (permalink / raw)
To: Mina Almasry
Cc: linux-kernel, netdev, kvm, virtualization, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Stefan Hajnoczi,
Stefano Garzarella, David Howells, Jason Gunthorpe,
Christian König, Yunsheng Lin, Willem de Bruijn
On Wed, Dec 20, 2023 at 01:45:02PM -0800, Mina Almasry wrote:
> diff --git a/net/kcm/kcmsock.c b/net/kcm/kcmsock.c
> index 65d1f6755f98..3180a54b2c68 100644
> --- a/net/kcm/kcmsock.c
> +++ b/net/kcm/kcmsock.c
> @@ -636,9 +636,15 @@ static int kcm_write_msgs(struct kcm_sock *kcm)
> for (i = 0; i < skb_shinfo(skb)->nr_frags; i++)
> msize += skb_shinfo(skb)->frags[i].bv_len;
Don't you need the above to cast to bio_vec to get bv_len? skb_frag_t
does not have bv_len anymore.
>
> + /* The cast to struct bio_vec* here assumes the frags are
> + * struct page based. WARN if there is no page in this skb.
> + */
> + DEBUG_NET_WARN_ON_ONCE(
> + !skb_frag_page(&skb_shinfo(skb)->frags[0]));
> +
> iov_iter_bvec(&msg.msg_iter, ITER_SOURCE,
> - skb_shinfo(skb)->frags, skb_shinfo(skb)->nr_frags,
> - msize);
> + (const struct bio_vec *)skb_shinfo(skb)->frags,
> + skb_shinfo(skb)->nr_frags, msize);
> iov_iter_advance(&msg.msg_iter, txm->frag_offset);
>
> do {
> --
> 2.43.0.472.g3155946c3a-goog
>
^ permalink raw reply [flat|nested] 19+ messages in thread* Re: [PATCH net-next v3 3/3] net: add netmem_ref to skb_frag_t
2023-12-20 21:45 ` [PATCH net-next v3 3/3] net: add netmem_ref to skb_frag_t Mina Almasry
` (2 preceding siblings ...)
2023-12-21 23:27 ` Shakeel Butt
@ 2023-12-22 20:10 ` kernel test robot
2023-12-22 23:39 ` kernel test robot
2023-12-23 11:16 ` kernel test robot
5 siblings, 0 replies; 19+ messages in thread
From: kernel test robot @ 2023-12-22 20:10 UTC (permalink / raw)
To: Mina Almasry, linux-kernel, netdev, kvm, virtualization
Cc: llvm, oe-kbuild-all, Mina Almasry, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Stefan Hajnoczi, Stefano Garzarella, David Howells,
Jason Gunthorpe, Christian König, Shakeel Butt, Yunsheng Lin,
Willem de Bruijn
Hi Mina,
kernel test robot noticed the following build errors:
[auto build test ERROR on net-next/main]
url: https://github.com/intel-lab-lkp/linux/commits/Mina-Almasry/vsock-virtio-use-skb_frag_-helpers/20231222-164637
base: net-next/main
patch link: https://lore.kernel.org/r/20231220214505.2303297-4-almasrymina%40google.com
patch subject: [PATCH net-next v3 3/3] net: add netmem_ref to skb_frag_t
config: powerpc-allmodconfig (https://download.01.org/0day-ci/archive/20231223/202312230340.iCf8sOop-lkp@intel.com/config)
compiler: clang version 18.0.0git (https://github.com/llvm/llvm-project d3ef86708241a3bee902615c190dead1638c4e09)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231223/202312230340.iCf8sOop-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202312230340.iCf8sOop-lkp@intel.com/
All errors (new ones prefixed by >>):
>> net/kcm/kcmsock.c:637:39: error: no member named 'bv_len' in 'struct skb_frag'
637 | msize += skb_shinfo(skb)->frags[i].bv_len;
| ~~~~~~~~~~~~~~~~~~~~~~~~~ ^
1 error generated.
vim +637 net/kcm/kcmsock.c
cd6e111bf5be5c Tom Herbert 2016-03-07 578
ab7ac4eb9832e3 Tom Herbert 2016-03-07 579 /* Write any messages ready on the kcm socket. Called with kcm sock lock
ab7ac4eb9832e3 Tom Herbert 2016-03-07 580 * held. Return bytes actually sent or error.
ab7ac4eb9832e3 Tom Herbert 2016-03-07 581 */
ab7ac4eb9832e3 Tom Herbert 2016-03-07 582 static int kcm_write_msgs(struct kcm_sock *kcm)
ab7ac4eb9832e3 Tom Herbert 2016-03-07 583 {
c31a25e1db486f David Howells 2023-06-09 584 unsigned int total_sent = 0;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 585 struct sock *sk = &kcm->sk;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 586 struct kcm_psock *psock;
c31a25e1db486f David Howells 2023-06-09 587 struct sk_buff *head;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 588 int ret = 0;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 589
ab7ac4eb9832e3 Tom Herbert 2016-03-07 590 kcm->tx_wait_more = false;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 591 psock = kcm->tx_psock;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 592 if (unlikely(psock && psock->tx_stopped)) {
ab7ac4eb9832e3 Tom Herbert 2016-03-07 593 /* A reserved psock was aborted asynchronously. Unreserve
ab7ac4eb9832e3 Tom Herbert 2016-03-07 594 * it and we'll retry the message.
ab7ac4eb9832e3 Tom Herbert 2016-03-07 595 */
ab7ac4eb9832e3 Tom Herbert 2016-03-07 596 unreserve_psock(kcm);
cd6e111bf5be5c Tom Herbert 2016-03-07 597 kcm_report_tx_retry(kcm);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 598 if (skb_queue_empty(&sk->sk_write_queue))
ab7ac4eb9832e3 Tom Herbert 2016-03-07 599 return 0;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 600
c31a25e1db486f David Howells 2023-06-09 601 kcm_tx_msg(skb_peek(&sk->sk_write_queue))->started_tx = false;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 602 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 603
c31a25e1db486f David Howells 2023-06-09 604 retry:
c31a25e1db486f David Howells 2023-06-09 605 while ((head = skb_peek(&sk->sk_write_queue))) {
c31a25e1db486f David Howells 2023-06-09 606 struct msghdr msg = {
c31a25e1db486f David Howells 2023-06-09 607 .msg_flags = MSG_DONTWAIT | MSG_SPLICE_PAGES,
c31a25e1db486f David Howells 2023-06-09 608 };
c31a25e1db486f David Howells 2023-06-09 609 struct kcm_tx_msg *txm = kcm_tx_msg(head);
c31a25e1db486f David Howells 2023-06-09 610 struct sk_buff *skb;
c31a25e1db486f David Howells 2023-06-09 611 unsigned int msize;
c31a25e1db486f David Howells 2023-06-09 612 int i;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 613
c31a25e1db486f David Howells 2023-06-09 614 if (!txm->started_tx) {
c31a25e1db486f David Howells 2023-06-09 615 psock = reserve_psock(kcm);
c31a25e1db486f David Howells 2023-06-09 616 if (!psock)
c31a25e1db486f David Howells 2023-06-09 617 goto out;
c31a25e1db486f David Howells 2023-06-09 618 skb = head;
c31a25e1db486f David Howells 2023-06-09 619 txm->frag_offset = 0;
c31a25e1db486f David Howells 2023-06-09 620 txm->sent = 0;
c31a25e1db486f David Howells 2023-06-09 621 txm->started_tx = true;
c31a25e1db486f David Howells 2023-06-09 622 } else {
ab7ac4eb9832e3 Tom Herbert 2016-03-07 623 if (WARN_ON(!psock)) {
ab7ac4eb9832e3 Tom Herbert 2016-03-07 624 ret = -EINVAL;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 625 goto out;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 626 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 627 skb = txm->frag_skb;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 628 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 629
ab7ac4eb9832e3 Tom Herbert 2016-03-07 630 if (WARN_ON(!skb_shinfo(skb)->nr_frags)) {
ab7ac4eb9832e3 Tom Herbert 2016-03-07 631 ret = -EINVAL;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 632 goto out;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 633 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 634
c31a25e1db486f David Howells 2023-06-09 635 msize = 0;
c31a25e1db486f David Howells 2023-06-09 636 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++)
c31a25e1db486f David Howells 2023-06-09 @637 msize += skb_shinfo(skb)->frags[i].bv_len;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 638
b2e5852793b6eb Mina Almasry 2023-12-20 639 /* The cast to struct bio_vec* here assumes the frags are
b2e5852793b6eb Mina Almasry 2023-12-20 640 * struct page based. WARN if there is no page in this skb.
b2e5852793b6eb Mina Almasry 2023-12-20 641 */
b2e5852793b6eb Mina Almasry 2023-12-20 642 DEBUG_NET_WARN_ON_ONCE(
b2e5852793b6eb Mina Almasry 2023-12-20 643 !skb_frag_page(&skb_shinfo(skb)->frags[0]));
b2e5852793b6eb Mina Almasry 2023-12-20 644
c31a25e1db486f David Howells 2023-06-09 645 iov_iter_bvec(&msg.msg_iter, ITER_SOURCE,
b2e5852793b6eb Mina Almasry 2023-12-20 646 (const struct bio_vec *)skb_shinfo(skb)->frags,
b2e5852793b6eb Mina Almasry 2023-12-20 647 skb_shinfo(skb)->nr_frags, msize);
c31a25e1db486f David Howells 2023-06-09 648 iov_iter_advance(&msg.msg_iter, txm->frag_offset);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 649
c31a25e1db486f David Howells 2023-06-09 650 do {
264ba53fac79b0 David Howells 2023-06-09 651 ret = sock_sendmsg(psock->sk->sk_socket, &msg);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 652 if (ret <= 0) {
ab7ac4eb9832e3 Tom Herbert 2016-03-07 653 if (ret == -EAGAIN) {
ab7ac4eb9832e3 Tom Herbert 2016-03-07 654 /* Save state to try again when there's
ab7ac4eb9832e3 Tom Herbert 2016-03-07 655 * write space on the socket
ab7ac4eb9832e3 Tom Herbert 2016-03-07 656 */
ab7ac4eb9832e3 Tom Herbert 2016-03-07 657 txm->frag_skb = skb;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 658 ret = 0;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 659 goto out;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 660 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 661
ab7ac4eb9832e3 Tom Herbert 2016-03-07 662 /* Hard failure in sending message, abort this
ab7ac4eb9832e3 Tom Herbert 2016-03-07 663 * psock since it has lost framing
71a2fae50895b3 Bhaskar Chowdhury 2021-03-27 664 * synchronization and retry sending the
ab7ac4eb9832e3 Tom Herbert 2016-03-07 665 * message from the beginning.
ab7ac4eb9832e3 Tom Herbert 2016-03-07 666 */
ab7ac4eb9832e3 Tom Herbert 2016-03-07 667 kcm_abort_tx_psock(psock, ret ? -ret : EPIPE,
ab7ac4eb9832e3 Tom Herbert 2016-03-07 668 true);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 669 unreserve_psock(kcm);
9f8d0dc0ec4a4b David Howells 2023-06-15 670 psock = NULL;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 671
c31a25e1db486f David Howells 2023-06-09 672 txm->started_tx = false;
cd6e111bf5be5c Tom Herbert 2016-03-07 673 kcm_report_tx_retry(kcm);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 674 ret = 0;
c31a25e1db486f David Howells 2023-06-09 675 goto retry;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 676 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 677
c31a25e1db486f David Howells 2023-06-09 678 txm->sent += ret;
c31a25e1db486f David Howells 2023-06-09 679 txm->frag_offset += ret;
cd6e111bf5be5c Tom Herbert 2016-03-07 680 KCM_STATS_ADD(psock->stats.tx_bytes, ret);
c31a25e1db486f David Howells 2023-06-09 681 } while (msg.msg_iter.count > 0);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 682
ab7ac4eb9832e3 Tom Herbert 2016-03-07 683 if (skb == head) {
ab7ac4eb9832e3 Tom Herbert 2016-03-07 684 if (skb_has_frag_list(skb)) {
c31a25e1db486f David Howells 2023-06-09 685 txm->frag_skb = skb_shinfo(skb)->frag_list;
c31a25e1db486f David Howells 2023-06-09 686 txm->frag_offset = 0;
c31a25e1db486f David Howells 2023-06-09 687 continue;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 688 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 689 } else if (skb->next) {
c31a25e1db486f David Howells 2023-06-09 690 txm->frag_skb = skb->next;
c31a25e1db486f David Howells 2023-06-09 691 txm->frag_offset = 0;
c31a25e1db486f David Howells 2023-06-09 692 continue;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 693 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 694
ab7ac4eb9832e3 Tom Herbert 2016-03-07 695 /* Successfully sent the whole packet, account for it. */
c31a25e1db486f David Howells 2023-06-09 696 sk->sk_wmem_queued -= txm->sent;
c31a25e1db486f David Howells 2023-06-09 697 total_sent += txm->sent;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 698 skb_dequeue(&sk->sk_write_queue);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 699 kfree_skb(head);
cd6e111bf5be5c Tom Herbert 2016-03-07 700 KCM_STATS_INCR(psock->stats.tx_msgs);
c31a25e1db486f David Howells 2023-06-09 701 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 702 out:
ab7ac4eb9832e3 Tom Herbert 2016-03-07 703 if (!head) {
ab7ac4eb9832e3 Tom Herbert 2016-03-07 704 /* Done with all queued messages. */
ab7ac4eb9832e3 Tom Herbert 2016-03-07 705 WARN_ON(!skb_queue_empty(&sk->sk_write_queue));
9f8d0dc0ec4a4b David Howells 2023-06-15 706 if (psock)
ab7ac4eb9832e3 Tom Herbert 2016-03-07 707 unreserve_psock(kcm);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 708 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 709
ab7ac4eb9832e3 Tom Herbert 2016-03-07 710 /* Check if write space is available */
ab7ac4eb9832e3 Tom Herbert 2016-03-07 711 sk->sk_write_space(sk);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 712
ab7ac4eb9832e3 Tom Herbert 2016-03-07 713 return total_sent ? : ret;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 714 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 715
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 19+ messages in thread* Re: [PATCH net-next v3 3/3] net: add netmem_ref to skb_frag_t
2023-12-20 21:45 ` [PATCH net-next v3 3/3] net: add netmem_ref to skb_frag_t Mina Almasry
` (3 preceding siblings ...)
2023-12-22 20:10 ` kernel test robot
@ 2023-12-22 23:39 ` kernel test robot
2023-12-23 11:16 ` kernel test robot
5 siblings, 0 replies; 19+ messages in thread
From: kernel test robot @ 2023-12-22 23:39 UTC (permalink / raw)
To: Mina Almasry, linux-kernel, netdev, kvm, virtualization
Cc: oe-kbuild-all, Mina Almasry, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Stefan Hajnoczi, Stefano Garzarella, David Howells,
Jason Gunthorpe, Christian König, Shakeel Butt, Yunsheng Lin,
Willem de Bruijn
Hi Mina,
kernel test robot noticed the following build errors:
[auto build test ERROR on net-next/main]
url: https://github.com/intel-lab-lkp/linux/commits/Mina-Almasry/vsock-virtio-use-skb_frag_-helpers/20231222-164637
base: net-next/main
patch link: https://lore.kernel.org/r/20231220214505.2303297-4-almasrymina%40google.com
patch subject: [PATCH net-next v3 3/3] net: add netmem_ref to skb_frag_t
config: i386-randconfig-141-20231222 (https://download.01.org/0day-ci/archive/20231223/202312230739.g0Tfssdt-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231223/202312230739.g0Tfssdt-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202312230739.g0Tfssdt-lkp@intel.com/
All errors (new ones prefixed by >>):
net/kcm/kcmsock.c: In function 'kcm_write_msgs':
>> net/kcm/kcmsock.c:637:59: error: 'skb_frag_t' {aka 'struct skb_frag'} has no member named 'bv_len'
637 | msize += skb_shinfo(skb)->frags[i].bv_len;
| ^
vim +637 net/kcm/kcmsock.c
cd6e111bf5be5c Tom Herbert 2016-03-07 578
ab7ac4eb9832e3 Tom Herbert 2016-03-07 579 /* Write any messages ready on the kcm socket. Called with kcm sock lock
ab7ac4eb9832e3 Tom Herbert 2016-03-07 580 * held. Return bytes actually sent or error.
ab7ac4eb9832e3 Tom Herbert 2016-03-07 581 */
ab7ac4eb9832e3 Tom Herbert 2016-03-07 582 static int kcm_write_msgs(struct kcm_sock *kcm)
ab7ac4eb9832e3 Tom Herbert 2016-03-07 583 {
c31a25e1db486f David Howells 2023-06-09 584 unsigned int total_sent = 0;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 585 struct sock *sk = &kcm->sk;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 586 struct kcm_psock *psock;
c31a25e1db486f David Howells 2023-06-09 587 struct sk_buff *head;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 588 int ret = 0;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 589
ab7ac4eb9832e3 Tom Herbert 2016-03-07 590 kcm->tx_wait_more = false;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 591 psock = kcm->tx_psock;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 592 if (unlikely(psock && psock->tx_stopped)) {
ab7ac4eb9832e3 Tom Herbert 2016-03-07 593 /* A reserved psock was aborted asynchronously. Unreserve
ab7ac4eb9832e3 Tom Herbert 2016-03-07 594 * it and we'll retry the message.
ab7ac4eb9832e3 Tom Herbert 2016-03-07 595 */
ab7ac4eb9832e3 Tom Herbert 2016-03-07 596 unreserve_psock(kcm);
cd6e111bf5be5c Tom Herbert 2016-03-07 597 kcm_report_tx_retry(kcm);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 598 if (skb_queue_empty(&sk->sk_write_queue))
ab7ac4eb9832e3 Tom Herbert 2016-03-07 599 return 0;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 600
c31a25e1db486f David Howells 2023-06-09 601 kcm_tx_msg(skb_peek(&sk->sk_write_queue))->started_tx = false;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 602 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 603
c31a25e1db486f David Howells 2023-06-09 604 retry:
c31a25e1db486f David Howells 2023-06-09 605 while ((head = skb_peek(&sk->sk_write_queue))) {
c31a25e1db486f David Howells 2023-06-09 606 struct msghdr msg = {
c31a25e1db486f David Howells 2023-06-09 607 .msg_flags = MSG_DONTWAIT | MSG_SPLICE_PAGES,
c31a25e1db486f David Howells 2023-06-09 608 };
c31a25e1db486f David Howells 2023-06-09 609 struct kcm_tx_msg *txm = kcm_tx_msg(head);
c31a25e1db486f David Howells 2023-06-09 610 struct sk_buff *skb;
c31a25e1db486f David Howells 2023-06-09 611 unsigned int msize;
c31a25e1db486f David Howells 2023-06-09 612 int i;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 613
c31a25e1db486f David Howells 2023-06-09 614 if (!txm->started_tx) {
c31a25e1db486f David Howells 2023-06-09 615 psock = reserve_psock(kcm);
c31a25e1db486f David Howells 2023-06-09 616 if (!psock)
c31a25e1db486f David Howells 2023-06-09 617 goto out;
c31a25e1db486f David Howells 2023-06-09 618 skb = head;
c31a25e1db486f David Howells 2023-06-09 619 txm->frag_offset = 0;
c31a25e1db486f David Howells 2023-06-09 620 txm->sent = 0;
c31a25e1db486f David Howells 2023-06-09 621 txm->started_tx = true;
c31a25e1db486f David Howells 2023-06-09 622 } else {
ab7ac4eb9832e3 Tom Herbert 2016-03-07 623 if (WARN_ON(!psock)) {
ab7ac4eb9832e3 Tom Herbert 2016-03-07 624 ret = -EINVAL;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 625 goto out;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 626 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 627 skb = txm->frag_skb;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 628 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 629
ab7ac4eb9832e3 Tom Herbert 2016-03-07 630 if (WARN_ON(!skb_shinfo(skb)->nr_frags)) {
ab7ac4eb9832e3 Tom Herbert 2016-03-07 631 ret = -EINVAL;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 632 goto out;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 633 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 634
c31a25e1db486f David Howells 2023-06-09 635 msize = 0;
c31a25e1db486f David Howells 2023-06-09 636 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++)
c31a25e1db486f David Howells 2023-06-09 @637 msize += skb_shinfo(skb)->frags[i].bv_len;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 638
b2e5852793b6eb Mina Almasry 2023-12-20 639 /* The cast to struct bio_vec* here assumes the frags are
b2e5852793b6eb Mina Almasry 2023-12-20 640 * struct page based. WARN if there is no page in this skb.
b2e5852793b6eb Mina Almasry 2023-12-20 641 */
b2e5852793b6eb Mina Almasry 2023-12-20 642 DEBUG_NET_WARN_ON_ONCE(
b2e5852793b6eb Mina Almasry 2023-12-20 643 !skb_frag_page(&skb_shinfo(skb)->frags[0]));
b2e5852793b6eb Mina Almasry 2023-12-20 644
c31a25e1db486f David Howells 2023-06-09 645 iov_iter_bvec(&msg.msg_iter, ITER_SOURCE,
b2e5852793b6eb Mina Almasry 2023-12-20 646 (const struct bio_vec *)skb_shinfo(skb)->frags,
b2e5852793b6eb Mina Almasry 2023-12-20 647 skb_shinfo(skb)->nr_frags, msize);
c31a25e1db486f David Howells 2023-06-09 648 iov_iter_advance(&msg.msg_iter, txm->frag_offset);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 649
c31a25e1db486f David Howells 2023-06-09 650 do {
264ba53fac79b0 David Howells 2023-06-09 651 ret = sock_sendmsg(psock->sk->sk_socket, &msg);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 652 if (ret <= 0) {
ab7ac4eb9832e3 Tom Herbert 2016-03-07 653 if (ret == -EAGAIN) {
ab7ac4eb9832e3 Tom Herbert 2016-03-07 654 /* Save state to try again when there's
ab7ac4eb9832e3 Tom Herbert 2016-03-07 655 * write space on the socket
ab7ac4eb9832e3 Tom Herbert 2016-03-07 656 */
ab7ac4eb9832e3 Tom Herbert 2016-03-07 657 txm->frag_skb = skb;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 658 ret = 0;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 659 goto out;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 660 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 661
ab7ac4eb9832e3 Tom Herbert 2016-03-07 662 /* Hard failure in sending message, abort this
ab7ac4eb9832e3 Tom Herbert 2016-03-07 663 * psock since it has lost framing
71a2fae50895b3 Bhaskar Chowdhury 2021-03-27 664 * synchronization and retry sending the
ab7ac4eb9832e3 Tom Herbert 2016-03-07 665 * message from the beginning.
ab7ac4eb9832e3 Tom Herbert 2016-03-07 666 */
ab7ac4eb9832e3 Tom Herbert 2016-03-07 667 kcm_abort_tx_psock(psock, ret ? -ret : EPIPE,
ab7ac4eb9832e3 Tom Herbert 2016-03-07 668 true);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 669 unreserve_psock(kcm);
9f8d0dc0ec4a4b David Howells 2023-06-15 670 psock = NULL;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 671
c31a25e1db486f David Howells 2023-06-09 672 txm->started_tx = false;
cd6e111bf5be5c Tom Herbert 2016-03-07 673 kcm_report_tx_retry(kcm);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 674 ret = 0;
c31a25e1db486f David Howells 2023-06-09 675 goto retry;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 676 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 677
c31a25e1db486f David Howells 2023-06-09 678 txm->sent += ret;
c31a25e1db486f David Howells 2023-06-09 679 txm->frag_offset += ret;
cd6e111bf5be5c Tom Herbert 2016-03-07 680 KCM_STATS_ADD(psock->stats.tx_bytes, ret);
c31a25e1db486f David Howells 2023-06-09 681 } while (msg.msg_iter.count > 0);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 682
ab7ac4eb9832e3 Tom Herbert 2016-03-07 683 if (skb == head) {
ab7ac4eb9832e3 Tom Herbert 2016-03-07 684 if (skb_has_frag_list(skb)) {
c31a25e1db486f David Howells 2023-06-09 685 txm->frag_skb = skb_shinfo(skb)->frag_list;
c31a25e1db486f David Howells 2023-06-09 686 txm->frag_offset = 0;
c31a25e1db486f David Howells 2023-06-09 687 continue;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 688 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 689 } else if (skb->next) {
c31a25e1db486f David Howells 2023-06-09 690 txm->frag_skb = skb->next;
c31a25e1db486f David Howells 2023-06-09 691 txm->frag_offset = 0;
c31a25e1db486f David Howells 2023-06-09 692 continue;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 693 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 694
ab7ac4eb9832e3 Tom Herbert 2016-03-07 695 /* Successfully sent the whole packet, account for it. */
c31a25e1db486f David Howells 2023-06-09 696 sk->sk_wmem_queued -= txm->sent;
c31a25e1db486f David Howells 2023-06-09 697 total_sent += txm->sent;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 698 skb_dequeue(&sk->sk_write_queue);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 699 kfree_skb(head);
cd6e111bf5be5c Tom Herbert 2016-03-07 700 KCM_STATS_INCR(psock->stats.tx_msgs);
c31a25e1db486f David Howells 2023-06-09 701 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 702 out:
ab7ac4eb9832e3 Tom Herbert 2016-03-07 703 if (!head) {
ab7ac4eb9832e3 Tom Herbert 2016-03-07 704 /* Done with all queued messages. */
ab7ac4eb9832e3 Tom Herbert 2016-03-07 705 WARN_ON(!skb_queue_empty(&sk->sk_write_queue));
9f8d0dc0ec4a4b David Howells 2023-06-15 706 if (psock)
ab7ac4eb9832e3 Tom Herbert 2016-03-07 707 unreserve_psock(kcm);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 708 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 709
ab7ac4eb9832e3 Tom Herbert 2016-03-07 710 /* Check if write space is available */
ab7ac4eb9832e3 Tom Herbert 2016-03-07 711 sk->sk_write_space(sk);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 712
ab7ac4eb9832e3 Tom Herbert 2016-03-07 713 return total_sent ? : ret;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 714 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 715
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 19+ messages in thread* Re: [PATCH net-next v3 3/3] net: add netmem_ref to skb_frag_t
2023-12-20 21:45 ` [PATCH net-next v3 3/3] net: add netmem_ref to skb_frag_t Mina Almasry
` (4 preceding siblings ...)
2023-12-22 23:39 ` kernel test robot
@ 2023-12-23 11:16 ` kernel test robot
5 siblings, 0 replies; 19+ messages in thread
From: kernel test robot @ 2023-12-23 11:16 UTC (permalink / raw)
To: Mina Almasry, linux-kernel, netdev, kvm, virtualization
Cc: oe-kbuild-all, Mina Almasry, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Stefan Hajnoczi, Stefano Garzarella, David Howells,
Jason Gunthorpe, Christian König, Shakeel Butt, Yunsheng Lin,
Willem de Bruijn
Hi Mina,
kernel test robot noticed the following build warnings:
[auto build test WARNING on net-next/main]
url: https://github.com/intel-lab-lkp/linux/commits/Mina-Almasry/vsock-virtio-use-skb_frag_-helpers/20231222-164637
base: net-next/main
patch link: https://lore.kernel.org/r/20231220214505.2303297-4-almasrymina%40google.com
patch subject: [PATCH net-next v3 3/3] net: add netmem_ref to skb_frag_t
:::::: branch date: 15 hours ago
:::::: commit date: 15 hours ago
config: x86_64-randconfig-121-20231223 (https://download.01.org/0day-ci/archive/20231223/202312230726.4XaPn84E-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-12) 11.3.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231223/202312230726.4XaPn84E-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/r/202312230726.4XaPn84E-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
net/core/netevent.c: note: in included file (through include/linux/skbuff.h, include/net/net_namespace.h, include/linux/netdevice.h, ...):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/netevent.c: note: in included file (through include/net/net_namespace.h, include/linux/netdevice.h, include/linux/rtnetlink.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/request_sock.c: note: in included file (through include/linux/skbuff.h, include/linux/tcp.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/request_sock.c: note: in included file (through include/linux/tcp.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/utils.c: note: in included file (through include/linux/skbuff.h, include/net/net_namespace.h, include/linux/inet.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/utils.c: note: in included file (through include/net/net_namespace.h, include/linux/inet.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/secure_seq.c: note: in included file (through include/linux/skbuff.h, include/linux/tcp.h, include/net/tcp.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/secure_seq.c: note: in included file (through include/linux/tcp.h, include/net/tcp.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/net_namespace.c: note: in included file (through include/linux/skbuff.h, include/net/net_namespace.h, include/linux/netdevice.h, ...):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/net_namespace.c: note: in included file (through include/net/net_namespace.h, include/linux/netdevice.h, include/linux/rtnetlink.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/stream.c: note: in included file (through include/linux/skbuff.h, include/linux/tcp.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/stream.c: note: in included file (through include/linux/tcp.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/dst.c: note: in included file (through include/linux/skbuff.h, include/net/net_namespace.h, include/linux/netdevice.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/dst.c: note: in included file (through include/net/net_namespace.h, include/linux/netdevice.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/gen_stats.c: note: in included file (through include/linux/skbuff.h, include/net/net_namespace.h, include/linux/netdevice.h, ...):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/gen_stats.c: note: in included file (through include/net/net_namespace.h, include/linux/netdevice.h, include/linux/rtnetlink.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/gen_estimator.c: note: in included file (through include/linux/skbuff.h, include/net/net_namespace.h, include/linux/netdevice.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/gen_estimator.c: note: in included file (through include/net/net_namespace.h, include/linux/netdevice.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/scm.c: note: in included file (through include/linux/skbuff.h, include/net/net_namespace.h, include/linux/netdevice.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/scm.c: note: in included file (through include/net/net_namespace.h, include/linux/netdevice.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/datagram.c: note: in included file (through include/linux/skbuff.h, include/net/net_namespace.h, include/linux/inet.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/datagram.c: note: in included file (through include/net/net_namespace.h, include/linux/inet.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/sysctl_net_core.c: note: in included file (through include/linux/skbuff.h, include/linux/filter.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/sysctl_net_core.c: note: in included file (through include/linux/filter.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/dev_addr_lists.c: note: in included file (through include/linux/skbuff.h, include/net/net_namespace.h, include/linux/netdevice.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/dev_addr_lists.c: note: in included file (through include/net/net_namespace.h, include/linux/netdevice.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
net/core/dev_addr_lists.c: note: in included file (through include/linux/hrtimer.h, include/linux/sched.h, include/linux/delay.h, ...):
include/linux/rbtree.h:74:9: sparse: sparse: incompatible types in comparison expression (different address spaces):
include/linux/rbtree.h:74:9: sparse: struct rb_node [noderef] __rcu *
include/linux/rbtree.h:74:9: sparse: struct rb_node *
--
net/core/flow_dissector.c: note: in included file (through include/linux/skbuff.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/flow_dissector.c: note: in included file:
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/link_watch.c: note: in included file (through include/linux/skbuff.h, include/net/net_namespace.h, include/linux/netdevice.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/link_watch.c: note: in included file (through include/net/net_namespace.h, include/linux/netdevice.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/tso.c: note: in included file (through include/linux/skbuff.h, include/net/net_namespace.h, include/linux/netdevice.h, ...):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/tso.c: note: in included file (through include/net/net_namespace.h, include/linux/netdevice.h, include/linux/if_vlan.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/sock_diag.c: note: in included file (through include/linux/skbuff.h, include/linux/filter.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/sock_diag.c: note: in included file (through include/linux/filter.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/fib_notifier.c: note: in included file (through include/linux/skbuff.h, include/net/net_namespace.h, include/linux/netdevice.h, ...):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/fib_notifier.c: note: in included file (through include/net/net_namespace.h, include/linux/netdevice.h, include/linux/rtnetlink.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/netdev-genl-gen.c: note: in included file (through include/linux/skbuff.h, include/linux/netlink.h, include/net/netlink.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/netdev-genl-gen.c: note: in included file (through include/linux/netlink.h, include/net/netlink.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/dev_ioctl.c: note: in included file (through include/linux/skbuff.h, include/net/net_namespace.h, include/linux/netdevice.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/dev_ioctl.c: note: in included file (through include/net/net_namespace.h, include/linux/netdevice.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/sock_reuseport.c: note: in included file (through include/linux/skbuff.h, include/linux/ip.h, include/net/ip.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/sock_reuseport.c: note: in included file (through include/linux/ip.h, include/net/ip.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/gso.c: note: in included file (through include/linux/skbuff.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/gso.c: note: in included file:
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/flow_offload.c: note: in included file (through include/linux/skbuff.h, include/linux/netlink.h, include/net/flow_offload.h, ...):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/flow_offload.c: note: in included file (through include/linux/netlink.h, include/net/flow_offload.h, include/net/act_api.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/netdev-genl.c: note: in included file (through include/linux/skbuff.h, include/net/net_namespace.h, include/linux/netdevice.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/netdev-genl.c: note: in included file (through include/net/net_namespace.h, include/linux/netdevice.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/net-procfs.c: note: in included file (through include/linux/skbuff.h, include/net/net_namespace.h, include/linux/netdevice.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/net-procfs.c: note: in included file (through include/net/net_namespace.h, include/linux/netdevice.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/xdp.c: note: in included file (through include/linux/skbuff.h, include/linux/filter.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/xdp.c: note: in included file (through include/linux/filter.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/neighbour.c: note: in included file (through include/linux/skbuff.h, include/net/net_namespace.h, include/linux/netdevice.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/neighbour.c: note: in included file (through include/net/net_namespace.h, include/linux/netdevice.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/gro.c: note: in included file (through include/linux/skbuff.h, include/linux/ip.h, include/net/gro.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/gro.c: note: in included file (through include/linux/ip.h, include/net/gro.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/sock.c: note: in included file (through include/linux/skbuff.h, include/linux/ip.h, include/net/ip.h, include/linux/errqueue.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/sock.c: note: in included file (through include/linux/ip.h, include/net/ip.h, include/linux/errqueue.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/net-sysfs.c: note: in included file (through include/linux/skbuff.h, include/net/net_namespace.h, include/linux/netdevice.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/net-sysfs.c: note: in included file (through include/net/net_namespace.h, include/linux/netdevice.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/gro_cells.c: note: in included file (through include/linux/skbuff.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/gro_cells.c: note: in included file:
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/ptp_classifier.c: note: in included file (through include/linux/skbuff.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/ptp_classifier.c: note: in included file:
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/of_net.c: note: in included file (through include/linux/skbuff.h, include/linux/if_ether.h, include/linux/etherdevice.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/of_net.c: note: in included file (through include/linux/if_ether.h, include/linux/etherdevice.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/failover.c: note: in included file (through include/linux/skbuff.h, include/linux/if_ether.h, include/linux/etherdevice.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/failover.c: note: in included file (through include/linux/if_ether.h, include/linux/etherdevice.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/dst_cache.c: note: in included file (through include/linux/skbuff.h, include/net/net_namespace.h, include/linux/netdevice.h, ...):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/dst_cache.c: note: in included file (through include/net/net_namespace.h, include/linux/netdevice.h, include/net/dst.h, ...):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/rtnetlink.c: note: in included file (through include/linux/skbuff.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/rtnetlink.c: note: in included file:
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/skbuff.c: note: in included file (through include/linux/skbuff.h, include/net/net_namespace.h, include/linux/inet.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/skbuff.c: note: in included file (through include/net/net_namespace.h, include/linux/inet.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
>> net/core/skbuff.c:848:68: sparse: sparse: invalid modifier
--
net/core/dev.c: note: in included file (through include/linux/skbuff.h, include/linux/if_ether.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/dev.c: note: in included file (through include/linux/if_ether.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/net-traces.c: note: in included file (through include/linux/skbuff.h, include/net/net_namespace.h, include/linux/netdevice.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/net-traces.c: note: in included file (through include/net/net_namespace.h, include/linux/netdevice.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/core/filter.c: note: in included file (through include/linux/skbuff.h, include/linux/filter.h, include/linux/bpf_verifier.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/core/filter.c: note: in included file (through include/linux/filter.h, include/linux/bpf_verifier.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/ethtool/common.c: note: in included file (through include/linux/skbuff.h, include/linux/if_ether.h, include/linux/ethtool.h, ...):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/ethtool/common.c: note: in included file (through include/linux/if_ether.h, include/linux/ethtool.h, include/uapi/linux/ethtool_netlink.h, ...):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/ethtool/strset.c: note: in included file (through include/linux/skbuff.h, include/linux/if_ether.h, include/linux/ethtool.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/ethtool/strset.c: note: in included file (through include/linux/if_ether.h, include/linux/ethtool.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/ethtool/wol.c: note: in included file (through include/linux/skbuff.h, include/linux/if_ether.h, include/linux/ethtool.h, ...):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/ethtool/wol.c: note: in included file (through include/linux/if_ether.h, include/linux/ethtool.h, include/uapi/linux/ethtool_netlink.h, ...):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/ethtool/privflags.c: note: in included file (through include/linux/skbuff.h, include/linux/if_ether.h, include/linux/ethtool.h, ...):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/ethtool/privflags.c: note: in included file (through include/linux/if_ether.h, include/linux/ethtool.h, include/uapi/linux/ethtool_netlink.h, ...):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/ethtool/linkstate.c: note: in included file (through include/linux/skbuff.h, include/linux/if_ether.h, include/linux/ethtool.h, ...):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/ethtool/linkstate.c: note: in included file (through include/linux/if_ether.h, include/linux/ethtool.h, include/uapi/linux/ethtool_netlink.h, ...):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/ethtool/rss.c: note: in included file (through include/linux/skbuff.h, include/linux/if_ether.h, include/linux/ethtool.h, ...):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/ethtool/rss.c: note: in included file (through include/linux/if_ether.h, include/linux/ethtool.h, include/uapi/linux/ethtool_netlink.h, ...):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/ethtool/debug.c: note: in included file (through include/linux/skbuff.h, include/linux/if_ether.h, include/linux/ethtool.h, ...):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/ethtool/debug.c: note: in included file (through include/linux/if_ether.h, include/linux/ethtool.h, include/uapi/linux/ethtool_netlink.h, ...):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/ethtool/linkinfo.c: note: in included file (through include/linux/skbuff.h, include/linux/if_ether.h, include/linux/ethtool.h, ...):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/ethtool/linkinfo.c: note: in included file (through include/linux/if_ether.h, include/linux/ethtool.h, include/uapi/linux/ethtool_netlink.h, ...):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/ethtool/bitset.c: note: in included file (through include/linux/skbuff.h, include/linux/if_ether.h, include/linux/ethtool.h, ...):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/ethtool/bitset.c: note: in included file (through include/linux/if_ether.h, include/linux/ethtool.h, include/uapi/linux/ethtool_netlink.h, ...):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/ethtool/linkmodes.c: note: in included file (through include/linux/skbuff.h, include/linux/if_ether.h, include/linux/ethtool.h, ...):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/ethtool/linkmodes.c: note: in included file (through include/linux/if_ether.h, include/linux/ethtool.h, include/uapi/linux/ethtool_netlink.h, ...):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/ethtool/features.c: note: in included file (through include/linux/skbuff.h, include/linux/if_ether.h, include/linux/ethtool.h, ...):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/ethtool/features.c: note: in included file (through include/linux/if_ether.h, include/linux/ethtool.h, include/uapi/linux/ethtool_netlink.h, ...):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/ethtool/netlink.c: note: in included file (through include/linux/skbuff.h, include/net/net_namespace.h, include/linux/netdevice.h, ...):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/ethtool/netlink.c: note: in included file (through include/net/net_namespace.h, include/linux/netdevice.h, include/net/sock.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/ethtool/rings.c: note: in included file (through include/linux/skbuff.h, include/linux/if_ether.h, include/linux/ethtool.h, ...):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/ethtool/rings.c: note: in included file (through include/linux/if_ether.h, include/linux/ethtool.h, include/uapi/linux/ethtool_netlink.h, ...):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/ethtool/channels.c: note: in included file (through include/linux/skbuff.h, include/net/net_namespace.h, include/linux/netdevice.h, ...):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/ethtool/channels.c: note: in included file (through include/net/net_namespace.h, include/linux/netdevice.h, include/net/sock.h, ...):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/ethtool/pause.c: note: in included file (through include/linux/skbuff.h, include/linux/if_ether.h, include/linux/ethtool.h, ...):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/ethtool/pause.c: note: in included file (through include/linux/if_ether.h, include/linux/ethtool.h, include/uapi/linux/ethtool_netlink.h, ...):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/ethtool/eee.c: note: in included file (through include/linux/skbuff.h, include/linux/if_ether.h, include/linux/ethtool.h, ...):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/ethtool/eee.c: note: in included file (through include/linux/if_ether.h, include/linux/ethtool.h, include/uapi/linux/ethtool_netlink.h, ...):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/ethtool/ioctl.c: note: in included file (through include/linux/skbuff.h, include/linux/if_ether.h, include/linux/etherdevice.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/ethtool/ioctl.c: note: in included file (through include/linux/if_ether.h, include/linux/etherdevice.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/ethtool/coalesce.c: note: in included file (through include/linux/skbuff.h, include/linux/if_ether.h, include/linux/ethtool.h, ...):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/ethtool/coalesce.c: note: in included file (through include/linux/if_ether.h, include/linux/ethtool.h, include/uapi/linux/ethtool_netlink.h, ...):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/ethtool/tsinfo.c: note: in included file (through include/linux/skbuff.h, include/linux/if_ether.h, include/linux/ethtool.h, ...):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/ethtool/tsinfo.c: note: in included file (through include/linux/if_ether.h, include/linux/ethtool.h, include/uapi/linux/ethtool_netlink.h, ...):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/ethtool/cabletest.c: note: in included file (through include/linux/skbuff.h, include/linux/if_ether.h, include/linux/ethtool.h, ...):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/ethtool/cabletest.c: note: in included file (through include/linux/if_ether.h, include/linux/ethtool.h, include/linux/phy.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/ethtool/fec.c: note: in included file (through include/linux/skbuff.h, include/linux/if_ether.h, include/linux/ethtool.h, ...):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/ethtool/fec.c: note: in included file (through include/linux/if_ether.h, include/linux/ethtool.h, include/uapi/linux/ethtool_netlink.h, ...):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/ethtool/tunnels.c: note: in included file (through include/linux/skbuff.h, include/linux/if_ether.h, include/linux/ethtool.h, ...):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/ethtool/tunnels.c: note: in included file (through include/linux/if_ether.h, include/linux/ethtool.h, include/uapi/linux/ethtool_netlink.h, ...):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/ethtool/eeprom.c: note: in included file (through include/linux/skbuff.h, include/linux/if_ether.h, include/linux/ethtool.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/ethtool/eeprom.c: note: in included file (through include/linux/if_ether.h, include/linux/ethtool.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/ethtool/module.c: note: in included file (through include/linux/skbuff.h, include/linux/if_ether.h, include/linux/ethtool.h):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/ethtool/module.c: note: in included file (through include/linux/if_ether.h, include/linux/ethtool.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/ethtool/plca.c: note: in included file (through include/linux/skbuff.h, include/linux/if_ether.h, include/linux/ethtool.h, ...):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/ethtool/plca.c: note: in included file (through include/linux/if_ether.h, include/linux/ethtool.h, include/linux/phy.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/ethtool/phc_vclocks.c: note: in included file (through include/linux/skbuff.h, include/linux/if_ether.h, include/linux/ethtool.h, ...):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/ethtool/phc_vclocks.c: note: in included file (through include/linux/if_ether.h, include/linux/ethtool.h, include/uapi/linux/ethtool_netlink.h, ...):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/ethtool/pse-pd.c: note: in included file (through include/linux/skbuff.h, include/net/net_namespace.h, include/linux/netdevice.h, ...):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/ethtool/pse-pd.c: note: in included file (through include/net/net_namespace.h, include/linux/netdevice.h, net/ethtool/common.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/ethtool/stats.c: note: in included file (through include/linux/skbuff.h, include/linux/if_ether.h, include/linux/ethtool.h, ...):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/ethtool/stats.c: note: in included file (through include/linux/if_ether.h, include/linux/ethtool.h, include/uapi/linux/ethtool_netlink.h, ...):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
--
net/ethtool/mm.c: note: in included file (through include/linux/skbuff.h, include/net/net_namespace.h, include/linux/netdevice.h, ...):
>> include/net/netmem.h:28:54: sparse: sparse: invalid modifier
include/net/netmem.h:36:26: sparse: sparse: invalid modifier
include/net/netmem.h:38:27: sparse: sparse: invalid modifier
net/ethtool/mm.c: note: in included file (through include/net/net_namespace.h, include/linux/netdevice.h, net/ethtool/common.h):
>> include/linux/skbuff.h:364:20: sparse: sparse: invalid modifier
include/linux/skbuff.h:2440:57: sparse: sparse: invalid modifier
include/linux/skbuff.h:2456:67: sparse: sparse: invalid modifier
include/linux/skbuff.h:2498:54: sparse: sparse: invalid modifier
include/linux/skbuff.h:2521:52: sparse: sparse: invalid modifier
include/linux/skbuff.h:2571:68: sparse: sparse: invalid modifier
vim +364 include/linux/skbuff.h
3953c46c3ac7ee Marcelo Ricardo Leitner 2016-06-02 362
b2e5852793b6eb Mina Almasry 2023-12-20 363 typedef struct skb_frag {
b2e5852793b6eb Mina Almasry 2023-12-20 @364 netmem_ref netmem;
b2e5852793b6eb Mina Almasry 2023-12-20 365 unsigned int len;
b2e5852793b6eb Mina Almasry 2023-12-20 366 unsigned int offset;
b2e5852793b6eb Mina Almasry 2023-12-20 367 } skb_frag_t;
^1da177e4c3f41 Linus Torvalds 2005-04-16 368
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 19+ messages in thread