On 4-4-2017 20:53, Hans de Goede wrote: > Hi, > > On 04/04/2017 08:31 PM, Larry Finger wrote: >> On 03/29/2017 12:47 PM, Hans de Goede wrote: >>> The rtl8723bs is found on quite a few systems used by Linux users, >>> such as on Atom systems (Intel Computestick and various other >>> Atom based devices) and on many (budget) ARM boards such as >>> the CHIP. >>> >>> The plan moving forward with this is for the new clean, >>> written from scratch, rtl8xxxu driver to eventually gain >>> support for sdio devices. But there is no clear timeline >>> for that, so lets add this driver included in staging for now. >> >> Hans, >> >> I started looking at the Smatch errors. This one may be the result of >> a serious problem: >> >> CHECK drivers/staging/rtl8723bs/core/rtw_debug.c >> drivers/staging/rtl8723bs/core/rtw_debug.c:454 proc_get_survey_info() >> error: we previously assumed 'phead' could be null (see line 453) >> drivers/staging/rtl8723bs/core/rtw_debug.c:455 proc_get_survey_info() >> warn: variable dereferenced before check 'phead' (see line 454) >> >> A snippet of the code in question is as follows: >> >> spin_lock_bh(&(pmlmepriv->scanned_queue.lock)); >> phead = get_list_head(queue); >> plist = phead ? get_next(phead) : NULL; >> plist = get_next(phead); >> if ((!phead) || (!plist)) { >> spin_unlock_bh(&(pmlmepriv->scanned_queue.lock)); >> return 0; >> } >> >> This code comes directly from the hadess repo, but I am suspicious of >> the double call to get_next(phead). I cannot imagine any valid reason >> to skip every other entry on that list. > > If you look closer and simplify the first getnext line what is written is: > > plist = get_next(phead); > plist = get_next(phead); > > Which indeed looks like it could use improvement, but I don't > think it is seriously broken. So get_list_head(queue) can never return NULL? Otherwise I don't know how close I need to get for a simplified look ;-) Gr. AvS > Regards, > > Hans