[OpenWrt-Devel,libnl-tiny,1/3] use offsetof macro to make scan-build happy
diff mbox series

Message ID 20191106164120.5329-1-ynezz@true.cz
State Accepted
Delegated to: Petr Štetiar
Headers show
Series
  • [OpenWrt-Devel,libnl-tiny,1/3] use offsetof macro to make scan-build happy
Related show

Commit Message

Petr Štetiar Nov. 6, 2019, 4:41 p.m. UTC
scan-build from clang version 9 complains about following:

 cache.c:106:2: warning: Dereference of null pointer
        nl_list_for_each_entry_safe(obj, tmp, &cache->c_items, ce_list)
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 include/netlink/list.h:83:20: note: expanded from macro 'nl_list_for_each_entry_safe'
             pos = n, n = nl_list_entry(n->member.next, typeof(*n), member))
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 include/netlink/list.h:60:2: note: expanded from macro 'nl_list_entry'
        nl_container_of(ptr, type, member)
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 include/netlink/list.h:56:55: note: expanded from macro 'nl_container_of'
        const typeof( ((type *)0)->member ) *__mptr = (ptr);    \
                                                      ^~~~~

Signed-off-by: Petr Štetiar <ynezz@true.cz>
---
 include/netlink/list.h | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Patch
diff mbox series

diff --git a/include/netlink/list.h b/include/netlink/list.h
index c6876a77f76c..6eae2160327a 100644
--- a/include/netlink/list.h
+++ b/include/netlink/list.h
@@ -12,6 +12,8 @@ 
 #ifndef NETLINK_LIST_H_
 #define NETLINK_LIST_H_
 
+#include <stddef.h>
+
 struct nl_list_head
 {
 	struct nl_list_head *	next;
@@ -54,7 +56,7 @@  static inline int nl_list_empty(struct nl_list_head *head)
 
 #define nl_container_of(ptr, type, member) ({			\
         const typeof( ((type *)0)->member ) *__mptr = (ptr);	\
-        (type *)( (char *)__mptr - ((size_t) &((type *)0)->member));})
+        (type *) ((char *) __mptr - (offsetof(type, member)));})
 
 #define nl_list_entry(ptr, type, member) \
 	nl_container_of(ptr, type, member)