提交 5c13155d 编写于 作者: A Andrey Shvetsov 提交者: Greg Kroah-Hartman

staging: most: usb: fix size overflow

Despite the user payload may not be bigger than (2**16 - 1) bytes, the
final packet size may be bigger because of the gap space needed for the
controller.

This patch removes the temporary variables of the type u16 that are used
to hold the offsets that may be bigger than 2**16 bytes.
Signed-off-by: NAndrey Shvetsov <andrey.shvetsov@k2l.de>
Signed-off-by: NChristian Gromm <christian.gromm@microchip.com>
Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
上级 f5001928
......@@ -281,7 +281,6 @@ static int hdm_add_padding(struct most_dev *mdev, int channel, struct mbo *mbo)
struct most_channel_config *conf = &mdev->conf[channel];
unsigned int frame_size = get_stream_frame_size(conf);
unsigned int j, num_frames;
u16 rd_addr, wr_addr;
if (!frame_size)
return -EIO;
......@@ -293,13 +292,10 @@ static int hdm_add_padding(struct most_dev *mdev, int channel, struct mbo *mbo)
return -EIO;
}
for (j = 1; j < num_frames; j++) {
wr_addr = (num_frames - j) * USB_MTU;
rd_addr = (num_frames - j) * frame_size;
memmove(mbo->virt_address + wr_addr,
mbo->virt_address + rd_addr,
for (j = num_frames - 1; j > 0; j--)
memmove(mbo->virt_address + j * USB_MTU,
mbo->virt_address + j * frame_size,
frame_size);
}
mbo->buffer_length = num_frames * USB_MTU;
return 0;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册