[PATCH] bssgp: Fix call to llist_entry in fc_queue_timer_cfg

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/OpenBSC@lists.osmocom.org/.

Mike McTernan (wavemobile) mike.mcternan at wavemobile.com
Fri May 1 10:23:00 UTC 2015


> On 30.04.2015 20:01, Holger Freyther wrote:
> >
> >> On 30 Apr 2015, at 19:28, Jacob Erlbeck <jerlbeck at sysmocom.de> wrote:
> >> This is due to an '&' operator at the wrong place, accessing some
> >> parts in fc instead of the first element of the list.

Yikes!

I think the definition of container_of() shouldn't cast ptr:

#define container_of(ptr, type, member) ({                     \
-        const typeof( ((type *)0)->member ) *__mptr = (typeof( ((type *)0)->member ) *)(ptr);  \
+        const typeof( ((type *)0)->member ) *__mptr = (ptr);   \
         (type *)( (char *)__mptr - offsetof(type, member) );})

Signed-off-by: Michael McTernan <mike.mcternan at wavemobile.com>

Then we get one nice warning from gcc:

gprs_bssgp.c: In function 'fc_queue_timer_cfg':
gprs_bssgp.c:631:9: warning: initialization from incompatible pointer type [enabled by default]

Everything I've tried* still compiles and runs with this change (and generates no other warnings), but obviously libosmocore could be used somewhere else where container_of type abuse will now make warnings.  If such a case is found where the cast is correct and required, I'd recommend the casting be placed at the calls to container_of() where it is more visible and auditable.

Please try the above patch and consider applying it to libosmocore.  

Jacob, would you also like/be able to check that the above change is good with Coverity, incase that can dig out any other bugs?

Kind Regards,

Mike

* I build the following into my system, some of which use libosmocore:
libdbi-0.9.0
libdbi-drivers-0.9.0
libosmo-abis
libosmocore
libosmo-netif
libosmo-sccp
openbsc
openggsn
ortp-0.22.0
osmo-bts
osmo-pcu




More information about the OpenBSC mailing list