RDMA/uverbs: Add a check for uverbs_attr_get to uverbs_copy_to_struct_or_zero
authorChuhong Yuan <hslester96@gmail.com>
Fri, 18 Oct 2019 08:15:34 +0000 (16:15 +0800)
committerJason Gunthorpe <jgg@mellanox.com>
Tue, 22 Oct 2019 19:10:03 +0000 (16:10 -0300)
All current callers for uverbs_copy_to_struct_or_zero() already check that
the attribute exists, but it make sense to verify the result like the
other functions do.

Link: https://lore.kernel.org/r/20191018081533.8544-1-hslester96@gmail.com
Signed-off-by: Chuhong Yuan <hslester96@gmail.com>
Reviewed-by: Jason Gunthorpe <jgg@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/core/uverbs_ioctl.c

index 6175820..269938f 100644 (file)
@@ -795,6 +795,9 @@ int uverbs_copy_to_struct_or_zero(const struct uverbs_attr_bundle *bundle,
 {
        const struct uverbs_attr *attr = uverbs_attr_get(bundle, idx);
 
+       if (IS_ERR(attr))
+               return PTR_ERR(attr);
+
        if (size < attr->ptr_attr.len) {
                if (clear_user(u64_to_user_ptr(attr->ptr_attr.data) + size,
                               attr->ptr_attr.len - size))