Skip to contentSkip to conversation

sparse false positive in net/packet/af_packet.c

PATCH Michael S. Tsirkin 1 participant 1 message Nov 26, 2014

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

sparse triggers warnings in net/packet/af_packet.c in upstream Linux.
This is with sparse 0.5.0 in Fedora 20. See below for more info.

I worked around this in source, but I think it's a good idea to fix it in sparse as well, isn't it?

----- Forwarded message from "Michael S. Tsirkin" <[email protected]> -----

Date: Mon, 24 Nov 2014 13:32:16 +0200
From: "Michael S. Tsirkin" <[email protected]>
To: [email protected]
Cc: "David S. Miller" <[email protected]>, Daniel Borkmann <[email protected]>, Eric Dumazet <[email protected]>, Atzm Watanabe
<[email protected]>, Hannes Frederic Sowa <[email protected]>, Tom Herbert <[email protected]>, [email protected]
Subject: [PATCH] af_packet: fix sparse warning
Message-ID: <[email protected]>

af_packet produces lots of these:
net/packet/af_packet.c:384:39: warning: incorrect type in return expression (different modifiers)
net/packet/af_packet.c:384:39: expected struct page [pure] *
net/packet/af_packet.c:384:39: got struct page *

this seems to be because sparse does not realize that _pure refers to function, not the returned pointer.

Tweak code slightly to avoid the warning.

---
 net/packet/af_packet.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
net/packet/af_packet.c +1 -1
index d4a877e..586229a 100644
@@ -378,7 +378,7 @@ static void unregister_prot_hook(struct sock *sk, bool sync)
 		__unregister_prot_hook(sk, sync);
 }
 
-static inline __pure struct page *pgv_to_page(void *addr)
+static inline struct page * __pure pgv_to_page(void *addr)
 {
 	if (is_vmalloc_addr(addr))
 		return vmalloc_to_page(addr);
Signature · 3 lines
MST

----- End forwarded message -----