Skip to content

Commit

Permalink
IB/umad: Return EIO in case of when device disassociated
Browse files Browse the repository at this point in the history
[ Upstream commit 4fc5461 ]

MAD message received by the user has EINVAL error in all flows
including when the device is disassociated. That makes it impossible
for the applications to treat such flow differently.

Change it to return EIO, so the applications will be able to perform
disassociation recovery.

Fixes: 1da177e ("Linux-2.6.12-rc2")
Link: https://lore.kernel.org/r/20210125121339.837518-2-leon@kernel.org
Signed-off-by: Shay Drory <shayd@nvidia.com>
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
  • Loading branch information
shayshyi authored and gregkh committed Mar 4, 2021
1 parent 48e6713 commit 1598e9e
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion drivers/infiniband/core/user_mad.c
Expand Up @@ -379,6 +379,11 @@ static ssize_t ib_umad_read(struct file *filp, char __user *buf,

mutex_lock(&file->mutex);

if (file->agents_dead) {
mutex_unlock(&file->mutex);
return -EIO;
}

while (list_empty(&file->recv_list)) {
mutex_unlock(&file->mutex);

Expand Down Expand Up @@ -524,7 +529,7 @@ static ssize_t ib_umad_write(struct file *filp, const char __user *buf,

agent = __get_agent(file, packet->mad.hdr.id);
if (!agent) {
ret = -EINVAL;
ret = -EIO;
goto err_up;
}

Expand Down

0 comments on commit 1598e9e

Please sign in to comment.