mirror of https://gitee.com/openkylin/linux.git
usb: wusbcore: wa-xfer: use struct_size() helper
Make use of the struct_size() helper instead of an open-coded version in order to avoid any potential type mistakes, in particular in the context in which this code is being used. So, change the following form: sizeof(*packet_desc) + (sizeof(packet_desc->PacketLength[0]) * seg->isoc_frame_count) to : struct_size(packet_status, PacketStatus, seg->isoc_frame_count); This code was detected with the help of Coccinelle. Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
5ebf5c8903
commit
01bdf01c7b
|
@ -662,9 +662,9 @@ static void __wa_setup_isoc_packet_descr(
|
||||||
|
|
||||||
/* populate isoc packet descriptor. */
|
/* populate isoc packet descriptor. */
|
||||||
packet_desc->bPacketType = WA_XFER_ISO_PACKET_INFO;
|
packet_desc->bPacketType = WA_XFER_ISO_PACKET_INFO;
|
||||||
packet_desc->wLength = cpu_to_le16(sizeof(*packet_desc) +
|
packet_desc->wLength = cpu_to_le16(struct_size(packet_desc,
|
||||||
(sizeof(packet_desc->PacketLength[0]) *
|
PacketLength,
|
||||||
seg->isoc_frame_count));
|
seg->isoc_frame_count));
|
||||||
for (frame_index = 0; frame_index < seg->isoc_frame_count;
|
for (frame_index = 0; frame_index < seg->isoc_frame_count;
|
||||||
++frame_index) {
|
++frame_index) {
|
||||||
int offset_index = frame_index + seg->isoc_frame_offset;
|
int offset_index = frame_index + seg->isoc_frame_offset;
|
||||||
|
@ -2438,7 +2438,7 @@ static int wa_process_iso_packet_status(struct wahc *wa, struct urb *urb)
|
||||||
struct wa_rpipe *rpipe;
|
struct wa_rpipe *rpipe;
|
||||||
unsigned done = 0, dti_busy = 0, data_frame_count = 0, seg_index;
|
unsigned done = 0, dti_busy = 0, data_frame_count = 0, seg_index;
|
||||||
unsigned first_frame_index = 0, rpipe_ready = 0;
|
unsigned first_frame_index = 0, rpipe_ready = 0;
|
||||||
int expected_size;
|
size_t expected_size;
|
||||||
|
|
||||||
/* We have a xfer result buffer; check it */
|
/* We have a xfer result buffer; check it */
|
||||||
dev_dbg(dev, "DTI: isoc packet status %d bytes at %p\n",
|
dev_dbg(dev, "DTI: isoc packet status %d bytes at %p\n",
|
||||||
|
@ -2460,11 +2460,10 @@ static int wa_process_iso_packet_status(struct wahc *wa, struct urb *urb)
|
||||||
goto error_bad_seg;
|
goto error_bad_seg;
|
||||||
seg = xfer->seg[wa->dti_isoc_xfer_seg];
|
seg = xfer->seg[wa->dti_isoc_xfer_seg];
|
||||||
rpipe = xfer->ep->hcpriv;
|
rpipe = xfer->ep->hcpriv;
|
||||||
expected_size = sizeof(*packet_status) +
|
expected_size = struct_size(packet_status, PacketStatus,
|
||||||
(sizeof(packet_status->PacketStatus[0]) *
|
seg->isoc_frame_count);
|
||||||
seg->isoc_frame_count);
|
|
||||||
if (urb->actual_length != expected_size) {
|
if (urb->actual_length != expected_size) {
|
||||||
dev_err(dev, "DTI Error: isoc packet status--bad urb length (%d bytes vs %d needed)\n",
|
dev_err(dev, "DTI Error: isoc packet status--bad urb length (%d bytes vs %zu needed)\n",
|
||||||
urb->actual_length, expected_size);
|
urb->actual_length, expected_size);
|
||||||
goto error_bad_seg;
|
goto error_bad_seg;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue