diff options
author | Jason Gunthorpe <jgg@mellanox.com> | 2018-08-09 19:19:35 +0300 |
---|---|---|
committer | Jason Gunthorpe <jgg@mellanox.com> | 2018-08-10 00:46:07 +0300 |
commit | 922983c2a1a2f679cd576eb7162f413c15a4e979 (patch) | |
tree | 48f8565eff0da8c49584a3bffc575b0cde447879 /drivers/infiniband | |
parent | 61b717d041b1976530f68f8b539b2e3a7dd8e39c (diff) | |
download | linux-922983c2a1a2f679cd576eb7162f413c15a4e979.tar.xz |
IB/uverbs: Fix reading of 32 bit flags
This is missing a zeroing of the high bits of flags, and is also not
correct for big endian machines. Properly zero extend the 32 bit flags
into the 64 bit stack variable.
Reported-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
Fixes: bccd06223f21 ("IB/uverbs: Add UVERBS_ATTR_FLAGS_IN to the specs language")
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Reviewed-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
Diffstat (limited to 'drivers/infiniband')
-rw-r--r-- | drivers/infiniband/core/uverbs_ioctl.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/infiniband/core/uverbs_ioctl.c b/drivers/infiniband/core/uverbs_ioctl.c index f0655a84f9d9..23ff698ab08e 100644 --- a/drivers/infiniband/core/uverbs_ioctl.c +++ b/drivers/infiniband/core/uverbs_ioctl.c @@ -535,7 +535,7 @@ int uverbs_get_flags64(u64 *to, const struct uverbs_attr_bundle *attrs_bundle, if (attr->ptr_attr.len == 8) flags = attr->ptr_attr.data; else if (attr->ptr_attr.len == 4) - memcpy(&flags, &attr->ptr_attr.data, 4); + flags = *(u32 *)&attr->ptr_attr.data; else return -EINVAL; |