From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: usb: wusbcore: wa-xfer: use struct_size() helper From: "Gustavo A. R. Silva" Message-Id: <20190218202153.GA21376@embeddedor> Date: Mon, 18 Feb 2019 14:21:53 -0600 To: Greg Kroah-Hartman Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, "Gustavo A. R. Silva" List-ID: TWFrZSB1c2Ugb2YgdGhlIHN0cnVjdF9zaXplKCkgaGVscGVyIGluc3RlYWQgb2YgYW4gb3Blbi1j b2RlZCB2ZXJzaW9uCmluIG9yZGVyIHRvIGF2b2lkIGFueSBwb3RlbnRpYWwgdHlwZSBtaXN0YWtl cywgaW4gcGFydGljdWxhciBpbiB0aGUKY29udGV4dCBpbiB3aGljaCB0aGlzIGNvZGUgaXMgYmVp bmcgdXNlZC4KClNvLCBjaGFuZ2UgdGhlIGZvbGxvd2luZyBmb3JtOgoKc2l6ZW9mKCpwYWNrZXRf ZGVzYykgKyAoc2l6ZW9mKHBhY2tldF9kZXNjLT5QYWNrZXRMZW5ndGhbMF0pICogc2VnLT5pc29j X2ZyYW1lX2NvdW50KQoKdG8gOgoKc3RydWN0X3NpemUocGFja2V0X3N0YXR1cywgUGFja2V0U3Rh dHVzLCBzZWctPmlzb2NfZnJhbWVfY291bnQpOwoKVGhpcyBjb2RlIHdhcyBkZXRlY3RlZCB3aXRo IHRoZSBoZWxwIG9mIENvY2NpbmVsbGUuCgpTaWduZWQtb2ZmLWJ5OiBHdXN0YXZvIEEuIFIuIFNp bHZhIDxndXN0YXZvQGVtYmVkZGVkb3IuY29tPgotLS0KIGRyaXZlcnMvdXNiL3d1c2Jjb3JlL3dh LXhmZXIuYyB8IDE1ICsrKysrKystLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9u cygrKSwgOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi93dXNiY29yZS93 YS14ZmVyLmMgYi9kcml2ZXJzL3VzYi93dXNiY29yZS93YS14ZmVyLmMKaW5kZXggMDFmMmYyMTgz MGMwLi5hYmY4OGNlYTM3YmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3d1c2Jjb3JlL3dhLXhm ZXIuYworKysgYi9kcml2ZXJzL3VzYi93dXNiY29yZS93YS14ZmVyLmMKQEAgLTY2Miw5ICs2NjIs OSBAQCBzdGF0aWMgdm9pZCBfX3dhX3NldHVwX2lzb2NfcGFja2V0X2Rlc2NyKAogCiAJLyogcG9w dWxhdGUgaXNvYyBwYWNrZXQgZGVzY3JpcHRvci4gKi8KIAlwYWNrZXRfZGVzYy0+YlBhY2tldFR5 cGUgPSBXQV9YRkVSX0lTT19QQUNLRVRfSU5GTzsKLQlwYWNrZXRfZGVzYy0+d0xlbmd0aCA9IGNw dV90b19sZTE2KHNpemVvZigqcGFja2V0X2Rlc2MpICsKLQkJKHNpemVvZihwYWNrZXRfZGVzYy0+ UGFja2V0TGVuZ3RoWzBdKSAqCi0JCQlzZWctPmlzb2NfZnJhbWVfY291bnQpKTsKKwlwYWNrZXRf ZGVzYy0+d0xlbmd0aCA9IGNwdV90b19sZTE2KHN0cnVjdF9zaXplKHBhY2tldF9kZXNjLAorCQkJ CQkgICBQYWNrZXRMZW5ndGgsCisJCQkJCSAgIHNlZy0+aXNvY19mcmFtZV9jb3VudCkpOwogCWZv ciAoZnJhbWVfaW5kZXggPSAwOyBmcmFtZV9pbmRleCA8IHNlZy0+aXNvY19mcmFtZV9jb3VudDsK IAkJKytmcmFtZV9pbmRleCkgewogCQlpbnQgb2Zmc2V0X2luZGV4ID0gZnJhbWVfaW5kZXggKyBz ZWctPmlzb2NfZnJhbWVfb2Zmc2V0OwpAQCAtMjQzOCw3ICsyNDM4LDcgQEAgc3RhdGljIGludCB3 YV9wcm9jZXNzX2lzb19wYWNrZXRfc3RhdHVzKHN0cnVjdCB3YWhjICp3YSwgc3RydWN0IHVyYiAq dXJiKQogCXN0cnVjdCB3YV9ycGlwZSAqcnBpcGU7CiAJdW5zaWduZWQgZG9uZSA9IDAsIGR0aV9i dXN5ID0gMCwgZGF0YV9mcmFtZV9jb3VudCA9IDAsIHNlZ19pbmRleDsKIAl1bnNpZ25lZCBmaXJz dF9mcmFtZV9pbmRleCA9IDAsIHJwaXBlX3JlYWR5ID0gMDsKLQlpbnQgZXhwZWN0ZWRfc2l6ZTsK KwlzaXplX3QgZXhwZWN0ZWRfc2l6ZTsKIAogCS8qIFdlIGhhdmUgYSB4ZmVyIHJlc3VsdCBidWZm ZXI7IGNoZWNrIGl0ICovCiAJZGV2X2RiZyhkZXYsICJEVEk6IGlzb2MgcGFja2V0IHN0YXR1cyAl ZCBieXRlcyBhdCAlcFxuIiwKQEAgLTI0NjAsMTEgKzI0NjAsMTAgQEAgc3RhdGljIGludCB3YV9w cm9jZXNzX2lzb19wYWNrZXRfc3RhdHVzKHN0cnVjdCB3YWhjICp3YSwgc3RydWN0IHVyYiAqdXJi KQogCQlnb3RvIGVycm9yX2JhZF9zZWc7CiAJc2VnID0geGZlci0+c2VnW3dhLT5kdGlfaXNvY194 ZmVyX3NlZ107CiAJcnBpcGUgPSB4ZmVyLT5lcC0+aGNwcml2OwotCWV4cGVjdGVkX3NpemUgPSBz aXplb2YoKnBhY2tldF9zdGF0dXMpICsKLQkJCShzaXplb2YocGFja2V0X3N0YXR1cy0+UGFja2V0 U3RhdHVzWzBdKSAqCi0JCQlzZWctPmlzb2NfZnJhbWVfY291bnQpOworCWV4cGVjdGVkX3NpemUg PSBzdHJ1Y3Rfc2l6ZShwYWNrZXRfc3RhdHVzLCBQYWNrZXRTdGF0dXMsCisJCQkJICAgIHNlZy0+ aXNvY19mcmFtZV9jb3VudCk7CiAJaWYgKHVyYi0+YWN0dWFsX2xlbmd0aCAhPSBleHBlY3RlZF9z aXplKSB7Ci0JCWRldl9lcnIoZGV2LCAiRFRJIEVycm9yOiBpc29jIHBhY2tldCBzdGF0dXMtLWJh ZCB1cmIgbGVuZ3RoICglZCBieXRlcyB2cyAlZCBuZWVkZWQpXG4iLAorCQlkZXZfZXJyKGRldiwg IkRUSSBFcnJvcjogaXNvYyBwYWNrZXQgc3RhdHVzLS1iYWQgdXJiIGxlbmd0aCAoJWQgYnl0ZXMg dnMgJXp1IG5lZWRlZClcbiIsCiAJCQl1cmItPmFjdHVhbF9sZW5ndGgsIGV4cGVjdGVkX3NpemUp OwogCQlnb3RvIGVycm9yX2JhZF9zZWc7CiAJfQo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.5 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,USER_AGENT_MUTT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 527B6C43381 for ; Mon, 18 Feb 2019 20:21:58 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 2B172217D7 for ; Mon, 18 Feb 2019 20:21:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729061AbfBRUV4 (ORCPT ); Mon, 18 Feb 2019 15:21:56 -0500 Received: from gateway30.websitewelcome.com ([192.185.150.24]:42293 "EHLO gateway30.websitewelcome.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728434AbfBRUV4 (ORCPT ); Mon, 18 Feb 2019 15:21:56 -0500 Received: from cm16.websitewelcome.com (cm16.websitewelcome.com [100.42.49.19]) by gateway30.websitewelcome.com (Postfix) with ESMTP id E911F3B2D for ; Mon, 18 Feb 2019 14:21:54 -0600 (CST) Received: from gator4166.hostgator.com ([108.167.133.22]) by cmsmtp with SMTP id vpQIgrV2g4FKpvpQIgB16v; Mon, 18 Feb 2019 14:21:54 -0600 X-Authority-Reason: nr=8 Received: from [189.250.119.20] (port=47442 helo=embeddedor) by gator4166.hostgator.com with esmtpa (Exim 4.91) (envelope-from ) id 1gvpQI-001GOQ-5O; Mon, 18 Feb 2019 14:21:54 -0600 Date: Mon, 18 Feb 2019 14:21:53 -0600 From: "Gustavo A. R. Silva" To: Greg Kroah-Hartman Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, "Gustavo A. R. Silva" Subject: [PATCH] usb: wusbcore: wa-xfer: use struct_size() helper Message-ID: <20190218202153.GA21376@embeddedor> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.9.4 (2018-02-28) X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - gator4166.hostgator.com X-AntiAbuse: Original Domain - vger.kernel.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - embeddedor.com X-BWhitelist: no X-Source-IP: 189.250.119.20 X-Source-L: No X-Exim-ID: 1gvpQI-001GOQ-5O X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: (embeddedor) [189.250.119.20]:47442 X-Source-Auth: gustavo@embeddedor.com X-Email-Count: 3 X-Source-Cap: Z3V6aWRpbmU7Z3V6aWRpbmU7Z2F0b3I0MTY2Lmhvc3RnYXRvci5jb20= X-Local-Domain: yes Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 --- drivers/usb/wusbcore/wa-xfer.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/drivers/usb/wusbcore/wa-xfer.c b/drivers/usb/wusbcore/wa-xfer.c index 01f2f21830c0..abf88cea37bb 100644 --- a/drivers/usb/wusbcore/wa-xfer.c +++ b/drivers/usb/wusbcore/wa-xfer.c @@ -662,9 +662,9 @@ static void __wa_setup_isoc_packet_descr( /* populate isoc packet descriptor. */ packet_desc->bPacketType = WA_XFER_ISO_PACKET_INFO; - packet_desc->wLength = cpu_to_le16(sizeof(*packet_desc) + - (sizeof(packet_desc->PacketLength[0]) * - seg->isoc_frame_count)); + packet_desc->wLength = cpu_to_le16(struct_size(packet_desc, + PacketLength, + seg->isoc_frame_count)); for (frame_index = 0; frame_index < seg->isoc_frame_count; ++frame_index) { 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; unsigned done = 0, dti_busy = 0, data_frame_count = 0, seg_index; unsigned first_frame_index = 0, rpipe_ready = 0; - int expected_size; + size_t expected_size; /* We have a xfer result buffer; check it */ 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; seg = xfer->seg[wa->dti_isoc_xfer_seg]; rpipe = xfer->ep->hcpriv; - expected_size = sizeof(*packet_status) + - (sizeof(packet_status->PacketStatus[0]) * - seg->isoc_frame_count); + expected_size = struct_size(packet_status, PacketStatus, + seg->isoc_frame_count); 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); goto error_bad_seg; } -- 2.20.1