• C
    net: bridge: remove redundant checks for null p->dev and p->br · 4be7f182
    Colin Ian King 提交于
    mainline inclusion
    from mainline-5.0
    commit 40b1c813ba8e
    category: bugfix
    bugzilla: 6116
    CVE: NA
    
    -------------------------------------------------
    
    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: NColin Ian King <colin.king@canonical.com>
    Acked-by: NNikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    Signed-off-by: NKeefe LIU <liuqifa@huawei.com>
    Reviewed-by: NWei Yongjun <weiyongjun1@huawei.com>
    Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
    4be7f182
br_sysfs_if.c 10.5 KB