Message ID | 20231206164143.281107-1-sgarzare@redhat.com (mailing list archive) |
---|---|
State | Accepted |
Commit | b0a930e8d90caf66a94fee7a9d0b8472bc3e7561 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net] vsock/virtio: fix "comparison of distinct pointer types lacks a cast" warning | expand |
On Wed, Dec 06, 2023 at 05:41:43PM +0100, Stefano Garzarella wrote: > After backporting commit 581512a6dc93 ("vsock/virtio: MSG_ZEROCOPY > flag support") in CentOS Stream 9, CI reported the following error: > > In file included from ./include/linux/kernel.h:17, > from ./include/linux/list.h:9, > from ./include/linux/preempt.h:11, > from ./include/linux/spinlock.h:56, > from net/vmw_vsock/virtio_transport_common.c:9: > net/vmw_vsock/virtio_transport_common.c: In function ???virtio_transport_can_zcopy???: > ./include/linux/minmax.h:20:35: error: comparison of distinct pointer types lacks a cast [-Werror] > 20 | (!!(sizeof((typeof(x) *)1 == (typeof(y) *)1))) > | ^~ > ./include/linux/minmax.h:26:18: note: in expansion of macro ???__typecheck??? > 26 | (__typecheck(x, y) && __no_side_effects(x, y)) > | ^~~~~~~~~~~ > ./include/linux/minmax.h:36:31: note: in expansion of macro ???__safe_cmp??? > 36 | __builtin_choose_expr(__safe_cmp(x, y), \ > | ^~~~~~~~~~ > ./include/linux/minmax.h:45:25: note: in expansion of macro ???__careful_cmp??? > 45 | #define min(x, y) __careful_cmp(x, y, <) > | ^~~~~~~~~~~~~ > net/vmw_vsock/virtio_transport_common.c:63:37: note: in expansion of macro ???min??? > 63 | int pages_to_send = min(pages_in_iov, MAX_SKB_FRAGS); > > We could solve it by using min_t(), but this operation seems entirely > unnecessary, because we also pass MAX_SKB_FRAGS to iov_iter_npages(), > which performs almost the same check, returning at most MAX_SKB_FRAGS > elements. So, let's eliminate this unnecessary comparison. > > Fixes: 581512a6dc93 ("vsock/virtio: MSG_ZEROCOPY flag support") > Cc: avkrasnov@salutedevices.com > Signed-off-by: Stefano Garzarella <sgarzare@redhat.com> > --- Acked-by: Michael S. Tsirkin <mst@redhat.com> > net/vmw_vsock/virtio_transport_common.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/net/vmw_vsock/virtio_transport_common.c b/net/vmw_vsock/virtio_transport_common.c > index f6dc896bf44c..c8e162c9d1df 100644 > --- a/net/vmw_vsock/virtio_transport_common.c > +++ b/net/vmw_vsock/virtio_transport_common.c > @@ -59,8 +59,7 @@ static bool virtio_transport_can_zcopy(const struct virtio_transport *t_ops, > t_ops = virtio_transport_get_ops(info->vsk); > > if (t_ops->can_msgzerocopy) { > - int pages_in_iov = iov_iter_npages(iov_iter, MAX_SKB_FRAGS); > - int pages_to_send = min(pages_in_iov, MAX_SKB_FRAGS); > + int pages_to_send = iov_iter_npages(iov_iter, MAX_SKB_FRAGS); > > /* +1 is for packet header. */ > return t_ops->can_msgzerocopy(pages_to_send + 1); > -- > 2.43.0
On 06.12.2023 19:41, Stefano Garzarella wrote: > After backporting commit 581512a6dc93 ("vsock/virtio: MSG_ZEROCOPY > flag support") in CentOS Stream 9, CI reported the following error: > > In file included from ./include/linux/kernel.h:17, > from ./include/linux/list.h:9, > from ./include/linux/preempt.h:11, > from ./include/linux/spinlock.h:56, > from net/vmw_vsock/virtio_transport_common.c:9: > net/vmw_vsock/virtio_transport_common.c: In function ‘virtio_transport_can_zcopy‘: > ./include/linux/minmax.h:20:35: error: comparison of distinct pointer types lacks a cast [-Werror] > 20 | (!!(sizeof((typeof(x) *)1 == (typeof(y) *)1))) > | ^~ > ./include/linux/minmax.h:26:18: note: in expansion of macro ‘__typecheck‘ > 26 | (__typecheck(x, y) && __no_side_effects(x, y)) > | ^~~~~~~~~~~ > ./include/linux/minmax.h:36:31: note: in expansion of macro ‘__safe_cmp‘ > 36 | __builtin_choose_expr(__safe_cmp(x, y), \ > | ^~~~~~~~~~ > ./include/linux/minmax.h:45:25: note: in expansion of macro ‘__careful_cmp‘ > 45 | #define min(x, y) __careful_cmp(x, y, <) > | ^~~~~~~~~~~~~ > net/vmw_vsock/virtio_transport_common.c:63:37: note: in expansion of macro ‘min‘ > 63 | int pages_to_send = min(pages_in_iov, MAX_SKB_FRAGS); > > We could solve it by using min_t(), but this operation seems entirely > unnecessary, because we also pass MAX_SKB_FRAGS to iov_iter_npages(), > which performs almost the same check, returning at most MAX_SKB_FRAGS > elements. So, let's eliminate this unnecessary comparison. > > Fixes: 581512a6dc93 ("vsock/virtio: MSG_ZEROCOPY flag support") > Cc: avkrasnov@salutedevices.com > Signed-off-by: Stefano Garzarella <sgarzare@redhat.com> > --- Reviewed-by: Arseniy Krasnov <avkrasnov@salutedevices.com> > net/vmw_vsock/virtio_transport_common.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/net/vmw_vsock/virtio_transport_common.c b/net/vmw_vsock/virtio_transport_common.c > index f6dc896bf44c..c8e162c9d1df 100644 > --- a/net/vmw_vsock/virtio_transport_common.c > +++ b/net/vmw_vsock/virtio_transport_common.c > @@ -59,8 +59,7 @@ static bool virtio_transport_can_zcopy(const struct virtio_transport *t_ops, > t_ops = virtio_transport_get_ops(info->vsk); > > if (t_ops->can_msgzerocopy) { > - int pages_in_iov = iov_iter_npages(iov_iter, MAX_SKB_FRAGS); > - int pages_to_send = min(pages_in_iov, MAX_SKB_FRAGS); > + int pages_to_send = iov_iter_npages(iov_iter, MAX_SKB_FRAGS); > > /* +1 is for packet header. */ > return t_ops->can_msgzerocopy(pages_to_send + 1);
Hello: This patch was applied to netdev/net.git (main) by Jakub Kicinski <kuba@kernel.org>: On Wed, 6 Dec 2023 17:41:43 +0100 you wrote: > After backporting commit 581512a6dc93 ("vsock/virtio: MSG_ZEROCOPY > flag support") in CentOS Stream 9, CI reported the following error: > > In file included from ./include/linux/kernel.h:17, > from ./include/linux/list.h:9, > from ./include/linux/preempt.h:11, > from ./include/linux/spinlock.h:56, > from net/vmw_vsock/virtio_transport_common.c:9: > net/vmw_vsock/virtio_transport_common.c: In function ‘virtio_transport_can_zcopy‘: > ./include/linux/minmax.h:20:35: error: comparison of distinct pointer types lacks a cast [-Werror] > 20 | (!!(sizeof((typeof(x) *)1 == (typeof(y) *)1))) > | ^~ > ./include/linux/minmax.h:26:18: note: in expansion of macro ‘__typecheck‘ > 26 | (__typecheck(x, y) && __no_side_effects(x, y)) > | ^~~~~~~~~~~ > ./include/linux/minmax.h:36:31: note: in expansion of macro ‘__safe_cmp‘ > 36 | __builtin_choose_expr(__safe_cmp(x, y), \ > | ^~~~~~~~~~ > ./include/linux/minmax.h:45:25: note: in expansion of macro ‘__careful_cmp‘ > 45 | #define min(x, y) __careful_cmp(x, y, <) > | ^~~~~~~~~~~~~ > net/vmw_vsock/virtio_transport_common.c:63:37: note: in expansion of macro ‘min‘ > 63 | int pages_to_send = min(pages_in_iov, MAX_SKB_FRAGS); > > [...] Here is the summary with links: - [net] vsock/virtio: fix "comparison of distinct pointer types lacks a cast" warning https://git.kernel.org/netdev/net/c/b0a930e8d90c You are awesome, thank you!
diff --git a/net/vmw_vsock/virtio_transport_common.c b/net/vmw_vsock/virtio_transport_common.c index f6dc896bf44c..c8e162c9d1df 100644 --- a/net/vmw_vsock/virtio_transport_common.c +++ b/net/vmw_vsock/virtio_transport_common.c @@ -59,8 +59,7 @@ static bool virtio_transport_can_zcopy(const struct virtio_transport *t_ops, t_ops = virtio_transport_get_ops(info->vsk); if (t_ops->can_msgzerocopy) { - int pages_in_iov = iov_iter_npages(iov_iter, MAX_SKB_FRAGS); - int pages_to_send = min(pages_in_iov, MAX_SKB_FRAGS); + int pages_to_send = iov_iter_npages(iov_iter, MAX_SKB_FRAGS); /* +1 is for packet header. */ return t_ops->can_msgzerocopy(pages_to_send + 1);
After backporting commit 581512a6dc93 ("vsock/virtio: MSG_ZEROCOPY flag support") in CentOS Stream 9, CI reported the following error: In file included from ./include/linux/kernel.h:17, from ./include/linux/list.h:9, from ./include/linux/preempt.h:11, from ./include/linux/spinlock.h:56, from net/vmw_vsock/virtio_transport_common.c:9: net/vmw_vsock/virtio_transport_common.c: In function ‘virtio_transport_can_zcopy‘: ./include/linux/minmax.h:20:35: error: comparison of distinct pointer types lacks a cast [-Werror] 20 | (!!(sizeof((typeof(x) *)1 == (typeof(y) *)1))) | ^~ ./include/linux/minmax.h:26:18: note: in expansion of macro ‘__typecheck‘ 26 | (__typecheck(x, y) && __no_side_effects(x, y)) | ^~~~~~~~~~~ ./include/linux/minmax.h:36:31: note: in expansion of macro ‘__safe_cmp‘ 36 | __builtin_choose_expr(__safe_cmp(x, y), \ | ^~~~~~~~~~ ./include/linux/minmax.h:45:25: note: in expansion of macro ‘__careful_cmp‘ 45 | #define min(x, y) __careful_cmp(x, y, <) | ^~~~~~~~~~~~~ net/vmw_vsock/virtio_transport_common.c:63:37: note: in expansion of macro ‘min‘ 63 | int pages_to_send = min(pages_in_iov, MAX_SKB_FRAGS); We could solve it by using min_t(), but this operation seems entirely unnecessary, because we also pass MAX_SKB_FRAGS to iov_iter_npages(), which performs almost the same check, returning at most MAX_SKB_FRAGS elements. So, let's eliminate this unnecessary comparison. Fixes: 581512a6dc93 ("vsock/virtio: MSG_ZEROCOPY flag support") Cc: avkrasnov@salutedevices.com Signed-off-by: Stefano Garzarella <sgarzare@redhat.com> --- net/vmw_vsock/virtio_transport_common.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)