diff options
| -rw-r--r-- | drivers/infiniband/core/uverbs_main.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/infiniband/core/uverbs_main.c b/drivers/infiniband/core/uverbs_main.c index 1a3ac3d882b8..d3fff9e008a3 100644 --- a/drivers/infiniband/core/uverbs_main.c +++ b/drivers/infiniband/core/uverbs_main.c | |||
| @@ -584,14 +584,16 @@ static ssize_t ib_uverbs_write(struct file *filp, const char __user *buf, | |||
| 584 | 584 | ||
| 585 | if (hdr.command < 0 || | 585 | if (hdr.command < 0 || |
| 586 | hdr.command >= ARRAY_SIZE(uverbs_cmd_table) || | 586 | hdr.command >= ARRAY_SIZE(uverbs_cmd_table) || |
| 587 | !uverbs_cmd_table[hdr.command] || | 587 | !uverbs_cmd_table[hdr.command]) |
| 588 | !(file->device->ib_dev->uverbs_cmd_mask & (1ull << hdr.command))) | ||
| 589 | return -EINVAL; | 588 | return -EINVAL; |
| 590 | 589 | ||
| 591 | if (!file->ucontext && | 590 | if (!file->ucontext && |
| 592 | hdr.command != IB_USER_VERBS_CMD_GET_CONTEXT) | 591 | hdr.command != IB_USER_VERBS_CMD_GET_CONTEXT) |
| 593 | return -EINVAL; | 592 | return -EINVAL; |
| 594 | 593 | ||
| 594 | if (!(file->device->ib_dev->uverbs_cmd_mask & (1ull << hdr.command))) | ||
| 595 | return -ENOSYS; | ||
| 596 | |||
| 595 | return uverbs_cmd_table[hdr.command](file, buf + sizeof hdr, | 597 | return uverbs_cmd_table[hdr.command](file, buf + sizeof hdr, |
| 596 | hdr.in_words * 4, hdr.out_words * 4); | 598 | hdr.in_words * 4, hdr.out_words * 4); |
| 597 | } | 599 | } |
