Skip to content
  • Colin Ian King's avatar
    net: bridge: remove redundant checks for null p->dev and p->br · 40b1c813
    Colin Ian King authored
    A recent change added a null check on p->dev after p->dev was being
    dereferenced by the ns_capable check on p->dev. It turns out that
    neither the p->dev and p->br null checks are necessary, and can be
    removed, which cleans up a static analyis warning.
    
    As Nikolay Aleksandrov noted, these checks can be removed because:
    
    "My reasoning of why it shouldn't be possible:
    - On port add new_nbp() sets both p->dev and p->br before creating
      kobj/sysfs
    
    - On port del (trickier) del_nbp() calls kobject_del() before call_rcu()
      to destroy the port which in turn calls sysfs_remove_dir() which uses
      kernfs_remove() which deactivates (shouldn't be able to open new
      files) and calls kernfs_drain() to drain current open/mmaped files in
      the respective dir before continuing, thus making it impossible to
      open a bridge port sysfs file with p->dev and p->br equal to NULL.
    
    So I think it's safe to remove those checks altogether. It'd be nice to
    get a second look over my reasoning as I might be missing something in
    sysfs/kernfs call path."
    
    Thanks to Nikolay Aleksandrov's suggestion to remove the check and
    David Miller for sanity checking this.
    
    Detected by CoverityScan, CID#751490 ("Dereference before null check")
    
    Fixes: a5f3ea54
    
     ("net: bridge: add support for raw sysfs port options")
    Signed-off-by: default avatarColin Ian King <colin.king@canonical.com>
    Acked-by: default avatarNikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    40b1c813