Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit eabc7793 authored by Roland Dreier's avatar Roland Dreier
Browse files

IB/umad: make sure write()s have sufficient data



Make sure that userspace passes in enough data when sending a MAD.  We
always copy at least sizeof (struct ib_user_mad) + IB_MGMT_RMPP_HDR
bytes from userspace, so anything less is definitely invalid.  Also,
if the length is less than this limit, it's possible for the second
copy_from_user() to get a negative length and trigger a BUG().

Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
parent 48fd0d1f
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -312,7 +312,7 @@ static ssize_t ib_umad_write(struct file *filp, const char __user *buf,
	int ret, length, hdr_len, copy_offset;
	int rmpp_active = 0;

	if (count < sizeof (struct ib_user_mad))
	if (count < sizeof (struct ib_user_mad) + IB_MGMT_RMPP_HDR)
		return -EINVAL;

	length = count - sizeof (struct ib_user_mad);