IB/umad: Avoid destroying device while it is accessed
mainline inclusion from mainline-5.0-rc1 commit cf7ad303 category: bugfix bugzilla: 6512 CVE: NA -------------------------- Since Virtual Lanes BCT credits and MTU are set through separate MADs, we ib_umad_reg_agent2() and ib_umad_reg_agent() access the device name in dev_notice(), while concurrently, ib_umad_kill_port() can destroy the device using device_destroy(). cpu-0 cpu-1 ----- ----- ib_umad_ioctl() [...] ib_umad_kill_port() device_destroy(dev) ib_umad_reg_agent() dev_notice(dev) Therefore, first mark ib_dev as NULL, to block any further access in file ops, unregister the mad agent and destroy the device at the end after mutex is unlocked. This ensures that device doesn't get destroyed, while it may get accessed. Conflicts: drivers/infiniband/core/user_mad.c [jingxiangfeng: '900d07c1 IB/umad: Simplify and avoid dynamic allocation of class' has not been backported.so I have changed "&umad_class" to "umad_class".] Fixes: 0f29b46d ("IB/mad: add new ioctl to ABI to support new registration options") Signed-off-by: NParav Pandit <parav@mellanox.com> Reviewed-by: NJack Morgenstein <jackm@mellanox.com> Reviewed-by: NIra Weiny <ira.weiny@intel.com> Signed-off-by: NLeon Romanovsky <leonro@mellanox.com> Signed-off-by: NJason Gunthorpe <jgg@mellanox.com> Signed-off-by: NJing Xiangfeng <jingxiangfeng@huawei.com> Reviewed-by: NHanjun Guo <guohanjun@huawei.com> Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
Showing
想要评论请 注册 或 登录