b.a.t.m.a.n.lists.open-mesh.org archive mirror
 help / color / mirror / Atom feed
* [B.A.T.M.A.N.] [PATCH] batman-adv: silence smatch errors in multicast compat code
@ 2013-11-11 16:33 Simon Wunderlich
  2014-02-16 11:31 ` Linus Lüssing
  0 siblings, 1 reply; 2+ messages in thread
From: Simon Wunderlich @ 2013-11-11 16:33 UTC (permalink / raw)
  To: b.a.t.m.a.n

smatch is reporting problems of unreachable code parts:

multicast.c:170 batadv_mcast_get_bridge() info: ignoring unreachable
code.
tmp/multicast.c:172 batadv_mcast_get_bridge() info: ignoring
unreachable code.

These are caused by compat code which returns within a loop, never
giving the rest of the function a chance to be processed. This can be
changed by slightly adjusting the compat code, setting the iterator
variable to NULL and let the original function handle the rest. This
does not introduce any functional change.

Introduced by: a3f58139efedb96222dffdda89896c243fdff49e
("batman-adv: Multicast Listener Announcements via Translation Table")

Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
---
 compat.h |   14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/compat.h b/compat.h
index 186547b..a99c9d5 100644
--- a/compat.h
+++ b/compat.h
@@ -160,14 +160,12 @@ static inline int batadv_param_set_copystring(const char *val,
 #define NET_ADDR_RANDOM 0
 
 #define netdev_master_upper_dev_get_rcu(dev) \
-	upper; \
-	rcu_read_unlock(); \
+	NULL; \
 	if (dev->br_port ? 1 : 0) { \
+		rcu_read_unlock(); \
 		dev_hold(dev); \
 		return dev; \
 	} \
-\
-	return NULL\
 
 #endif /* < KERNEL_VERSION(2, 6, 36) */
 
@@ -344,14 +342,12 @@ static int __batadv_interface_set_mac_addr(x, y)
 
 #ifndef netdev_master_upper_dev_get_rcu
 #define netdev_master_upper_dev_get_rcu(dev) \
-	upper; \
-	rcu_read_unlock(); \
+	NULL; \
 	if (dev->priv_flags & IFF_BRIDGE_PORT) { \
+		rcu_read_unlock(); \
 		dev_hold(dev); \
 		return dev; \
-	} \
-\
-	return NULL\
+	}
 
 #endif /* netdev_master_upper_dev_get_rcu */
 
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [B.A.T.M.A.N.] [PATCH] batman-adv: silence smatch errors in multicast compat code
  2013-11-11 16:33 [B.A.T.M.A.N.] [PATCH] batman-adv: silence smatch errors in multicast compat code Simon Wunderlich
@ 2014-02-16 11:31 ` Linus Lüssing
  0 siblings, 0 replies; 2+ messages in thread
From: Linus Lüssing @ 2014-02-16 11:31 UTC (permalink / raw)
  To: b.a.t.m.a.n

On Mon, Nov 11, 2013 at 05:33:09PM +0100, Simon Wunderlich wrote:
> diff --git a/compat.h b/compat.h
> index 186547b..a99c9d5 100644
> --- a/compat.h
> +++ b/compat.h
> @@ -160,14 +160,12 @@ static inline int batadv_param_set_copystring(const char *val,
>  #define NET_ADDR_RANDOM 0
>  
>  #define netdev_master_upper_dev_get_rcu(dev) \
> -	upper; \
> -	rcu_read_unlock(); \
> +	NULL; \
>  	if (dev->br_port ? 1 : 0) { \
> +		rcu_read_unlock(); \
>  		dev_hold(dev); \
>  		return dev; \
>  	} \
> -\
> -	return NULL\
>

This approach unfortunately doesn't work and leads to crashes
because we assign NULL to upper and therefore dev, too, leading to
a null pointer exception when trying to access dev->br-port.

As the smatch warning is just a compat warning not leading to any
issues despite that, could we simply silence the build system to
ignore this instead?

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2014-02-16 11:31 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-11-11 16:33 [B.A.T.M.A.N.] [PATCH] batman-adv: silence smatch errors in multicast compat code Simon Wunderlich
2014-02-16 11:31 ` Linus Lüssing

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).