IB/mlx5: Device resource control for privileged DEVX user
authorAriel Levkovich <lariel@mellanox.com>
Sun, 5 May 2019 14:07:14 +0000 (17:07 +0300)
committerJason Gunthorpe <jgg@mellanox.com>
Mon, 6 May 2019 15:51:51 +0000 (12:51 -0300)
For DEVX users who have SYS_RAWIO capability, we set the internal device
resources capability when creating the UCTX.  This will allow the device
to restrict the allocation of internal device resources such as SW ICM
memory to privileged DEVX users only.

Signed-off-by: Ariel Levkovich <lariel@mellanox.com>
Reviewed-by: Eli Cohen <eli@mellanox.com>
Reviewed-by: Mark Bloch <markb@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/hw/mlx5/devx.c

index d627f44bc84d1a495425e6c35537278410037180..169ffffcf5ed73ce939863b367961a059adbfbd7 100644 (file)
@@ -85,6 +85,10 @@ int mlx5_ib_devx_create(struct mlx5_ib_dev *dev, bool is_user)
        if (is_user && capable(CAP_NET_RAW) &&
            (MLX5_CAP_GEN(dev->mdev, uctx_cap) & MLX5_UCTX_CAP_RAW_TX))
                cap |= MLX5_UCTX_CAP_RAW_TX;
+       if (is_user && capable(CAP_SYS_RAWIO) &&
+           (MLX5_CAP_GEN(dev->mdev, uctx_cap) &
+            MLX5_UCTX_CAP_INTERNAL_DEV_RES))
+               cap |= MLX5_UCTX_CAP_INTERNAL_DEV_RES;
 
        MLX5_SET(create_uctx_in, in, opcode, MLX5_CMD_OP_CREATE_UCTX);
        MLX5_SET(uctx, uctx, cap, cap);