]> asedeno.scripts.mit.edu Git - linux.git/commit
IB/umad: Avoid destroying device while it is accessed
authorParav Pandit <parav@mellanox.com>
Fri, 21 Dec 2018 14:19:24 +0000 (16:19 +0200)
committerJason Gunthorpe <jgg@mellanox.com>
Fri, 21 Dec 2018 17:39:36 +0000 (10:39 -0700)
commitcf7ad3030271c55a7119a8c2162563e3f6e93879
tree4d3dda853654e343de3c41e6b97e35921aa7e679
parent900d07c12d4ed0e2c237655b55383df8d2c715ff
IB/umad: Avoid destroying device while it is accessed

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.

Fixes: 0f29b46d49b0 ("IB/mad: add new ioctl to ABI to support new registration options")
Signed-off-by: Parav Pandit <parav@mellanox.com>
Reviewed-by: Jack Morgenstein <jackm@mellanox.com>
Reviewed-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/core/user_mad.c