From patchwork Tue May 12 15:04:10 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?SsOpcsO0bWUgUG91aWxsZXI=?= X-Patchwork-Id: 1288530 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=silabs.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=silabs.onmicrosoft.com header.i=@silabs.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-silabs-onmicrosoft-com header.b=Wz/xmABy; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 49M1MF6Hn0z9sT5 for ; Wed, 13 May 2020 01:05:29 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730819AbgELPFL (ORCPT ); Tue, 12 May 2020 11:05:11 -0400 Received: from mail-eopbgr770070.outbound.protection.outlook.com ([40.107.77.70]:42722 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1730763AbgELPFJ (ORCPT ); Tue, 12 May 2020 11:05:09 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Y24NHswXEczEghx39yZMfXOf7IIdKzng4pqfZmnAQFtnCbJVj1yrvxMWqM6PzCcTlPH8asiRiqdr/+FQfUZ5m3QFtxvXVHvxhfo5VCiXF3SeFZ7ur3EPnK1e7850p5Xy0ibhMrTso80kArRhyGbBhvbvuEhbWv7WQpTxu+ZmiuLw9dZ536+dCnYfvdRD/9vNvRPhOaBbvb8zdcs41FOylh05pbagQptxF8RqqHVnS2jj/3M8CNmCeuzss3k55d9CylYyqWeVX77z/Helows9KmwXr5DdkDD3wOSuXQ48/1tJMCjY/lbObXhztQbQ8Kb+AGSSunvPbUd3jwzookfMpw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jors9pnqDJ1pceqqH6V+qkLxEFZqnPOt2V0GAJ+2TMI=; b=JQRq87Ueux3BqDXdvnBTuRdygullTjNExLT1nx55DzSPsXam1K//3z67hZhVS3K/KpgYr3yxHi6B2fzwJtUCnEFpBEgQOalM3UMbE7ESXS6E+22+C91HoWja1qmDZlc/wvJZ1ruqoV+CqxQEL0drRfyYqpbQi15XLrkSZaja4dtjkhLSI88xNGV/bAV7Ssiu1aLHytkscJ6rqaX6OyLxBCKkMQyhSOBuwSvVhWCN/aIa6j7rlhgl+ywueYuIg1Navc2IMjFc5W6+9DTtPT9acPw0rsi8j/4xh022VR6DdGgPQJQn/oI/7pYBx0ZRGFMJR1k3EcZVJ0t4NgGuXOQLDw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=silabs.com; dmarc=pass action=none header.from=silabs.com; dkim=pass header.d=silabs.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.onmicrosoft.com; s=selector2-silabs-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jors9pnqDJ1pceqqH6V+qkLxEFZqnPOt2V0GAJ+2TMI=; b=Wz/xmAByGj5oRkl+YIIec9NphPv1G8I2X1sP6f4dAB4SY23jPAs8BHaz204nLZtzoWf+tk9Yz932vX9YFL0ZX01SET+NgSnxZv3roMaLY30NYvG7q0GBwPYmKO6yrClw+V2toEd7uxrvrishNMagFBdMHKcrsa2xU+yFz6IgZOM= Authentication-Results: driverdev.osuosl.org; dkim=none (message not signed) header.d=none;driverdev.osuosl.org; dmarc=none action=none header.from=silabs.com; Received: from MWHPR11MB1775.namprd11.prod.outlook.com (2603:10b6:300:10e::14) by MWHPR11MB1741.namprd11.prod.outlook.com (2603:10b6:300:10d::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2979.34; Tue, 12 May 2020 15:04:55 +0000 Received: from MWHPR11MB1775.namprd11.prod.outlook.com ([fe80::e055:3e6d:ff4:56da]) by MWHPR11MB1775.namprd11.prod.outlook.com ([fe80::e055:3e6d:ff4:56da%5]) with mapi id 15.20.2979.033; Tue, 12 May 2020 15:04:55 +0000 From: Jerome Pouiller To: devel@driverdev.osuosl.org, linux-wireless@vger.kernel.org Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Greg Kroah-Hartman , Kalle Valo , "David S . Miller" , =?utf-8?b?SsOpcsO0bWUgUG91aWxsZXI=?= Subject: [PATCH v2 13/17] staging: wfx: fix access to le32 attribute 'len' Date: Tue, 12 May 2020 17:04:10 +0200 Message-Id: <20200512150414.267198-14-Jerome.Pouiller@silabs.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200512150414.267198-1-Jerome.Pouiller@silabs.com> References: <20200512150414.267198-1-Jerome.Pouiller@silabs.com> X-ClientProxiedBy: DM5PR1101CA0003.namprd11.prod.outlook.com (2603:10b6:4:4c::13) To MWHPR11MB1775.namprd11.prod.outlook.com (2603:10b6:300:10e::14) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from pc-42.silabs.com (82.67.86.106) by DM5PR1101CA0003.namprd11.prod.outlook.com (2603:10b6:4:4c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3000.20 via Frontend Transport; Tue, 12 May 2020 15:04:54 +0000 X-Mailer: git-send-email 2.26.2 X-Originating-IP: [82.67.86.106] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0858842b-ce56-4a4d-a629-08d7f685d4af X-MS-TrafficTypeDiagnostic: MWHPR11MB1741: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:343; X-Forefront-PRVS: 0401647B7F X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Ky10jDMZdYW5QH0pE7OmjAt83dQ6BfyPFqqIuowXMxj4Wxto4ezp88HTRn/tE7NkZjluN4IVCJBwnNBCkvRIzOLh6W3h6W9iDpe10Q1xXg4rEZauAIimpAF0VtJYmTHyRuS4MrFOnIf77jOoBzxdhobRiJMaoWNyA/Cv0RYoqZ4UW0V3KW75wxE+9UvfnNdb5DNa+mWKDg4hZ7PytThi9qmOH97hbG/9uY9l7BwZC8Vtr238UfEjBwt8w4vrdIEPSMWY1Vnk6nqzFUIxVz4TMmNbLPCNqTlB5u6ivaNsgT0ailPfQx7kWQoXwNtSo8KtF7CWCkP7zDcw9NLm1S6hjPt7zEPfi2dCIAv8PleLaifKn6FF4u/FK410MpU5AirpwT0aZQTJyXkl+vWBBcGv8/0A0rdpLbDXJa/JYMV9Yh2YVqxXADq+57ziLEWh3j1Py4qjwYhzl9F1TDAJt0YJiGemHiXx3v4qNhsuA87oY3kJ5orGlt6pe/BDQ8vMezyql6Zl3kA8f2ZDny19oYIq5g== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MWHPR11MB1775.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(396003)(366004)(376002)(39860400002)(346002)(136003)(33430700001)(54906003)(107886003)(478600001)(8676002)(5660300002)(316002)(1076003)(956004)(8936002)(2616005)(186003)(2906002)(7696005)(86362001)(4326008)(52116002)(6666004)(6486002)(66476007)(66574014)(26005)(66946007)(66556008)(33440700001)(16526019)(36756003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: Hy8Jdh64UUnAqbJth942BnssQgQWVB/4wesKVR/5/qQpUKDkDdx2ss+TN5SxUBbkNtkG2sidyJ0foi63lcLgG7fVuD3llCVbCQWunO/K3KPB4vaQqnKhbhW5nlA8rBtzm6cWwO3MB3Nml2lWnhfnDqfgKOGB4u6Q6iN3ypYk98FBUo2IC8VXq19ZqxYpAoGhuvqO9u4yJlQKkutRdtDTrfkfz/nEIwmyi5FpqoFzTC2/aR2A/trSg7DFFhHzBppW1k62kkIdG/uaMs9qm3hk/cnKkqKgW7rNu9jtbSG13k09/7biDdtBWpoPcpluCtRdpWLaM5mctK6hhDiWkhtmPKxwmujDmrRLhaU7FK8q514B+xx/a5CBscB6Q4RfqabyAE8U8Uug87RNugb9V4c5YRFwj/xe9p1AZqwcVX7UeyolwZhpt9lb7CMNVTJNKiJrEH+0wvaQa1+NEqHQP6bCp83DgFT5BOcfuBHZ/dnuUHQ= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0858842b-ce56-4a4d-a629-08d7f685d4af X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 May 2020 15:04:55.7787 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 54dbd822-5231-4b20-944d-6f4abcd541fb X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: V7dOq6SIVVAaW/hGr6KKpKEhP0tz2jm/e4Degt4uGtmxyhLnOZfj8CLr2o27nk9SA2Dp+o5oRlYhdJeKiVjWLg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR11MB1741 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Jérôme Pouiller Sparse complains about the accesses to the field 'len' from struct hif_msg: drivers/staging/wfx/bh.c:88:32: warning: restricted __le16 degrades to integer drivers/staging/wfx/bh.c:88:32: warning: restricted __le16 degrades to integer drivers/staging/wfx/bh.c:93:32: warning: restricted __le16 degrades to integer drivers/staging/wfx/bh.c:93:32: warning: cast to restricted __le16 drivers/staging/wfx/bh.c:93:32: warning: restricted __le16 degrades to integer drivers/staging/wfx/bh.c:121:25: warning: incorrect type in argument 2 (different base types) drivers/staging/wfx/bh.c:121:25: expected unsigned int len drivers/staging/wfx/bh.c:121:25: got restricted __le16 [usertype] len drivers/staging/wfx/hif_rx.c:27:22: warning: restricted __le16 degrades to integer drivers/staging/wfx/hif_rx.c:347:39: warning: incorrect type in argument 7 (different base types) drivers/staging/wfx/hif_rx.c:347:39: expected unsigned int [usertype] len drivers/staging/wfx/hif_rx.c:347:39: got restricted __le16 const [usertype] len drivers/staging/wfx/hif_rx.c:365:39: warning: incorrect type in argument 7 (different base types) drivers/staging/wfx/hif_rx.c:365:39: expected unsigned int [usertype] len drivers/staging/wfx/hif_rx.c:365:39: got restricted __le16 const [usertype] len drivers/staging/wfx/./traces.h:195:1: warning: incorrect type in assignment (different base types) drivers/staging/wfx/./traces.h:195:1: expected int msg_len drivers/staging/wfx/./traces.h:195:1: got restricted __le16 const [usertype] len drivers/staging/wfx/./traces.h:195:1: warning: incorrect type in assignment (different base types) drivers/staging/wfx/./traces.h:195:1: expected int msg_len drivers/staging/wfx/./traces.h:195:1: got restricted __le16 const [usertype] len drivers/staging/wfx/debug.c:319:20: warning: restricted __le16 degrades to integer drivers/staging/wfx/secure_link.c:85:27: warning: restricted __le16 degrades to integer drivers/staging/wfx/secure_link.c:85:27: warning: restricted __le16 degrades to integer Indeed, the attribute len is little-endian. We have to take to the endianness when we access it. Signed-off-by: Jérôme Pouiller --- drivers/staging/wfx/bh.c | 13 ++++++------- drivers/staging/wfx/debug.c | 2 +- drivers/staging/wfx/hif_rx.c | 6 +++--- drivers/staging/wfx/traces.h | 2 +- 4 files changed, 11 insertions(+), 12 deletions(-) diff --git a/drivers/staging/wfx/bh.c b/drivers/staging/wfx/bh.c index 55724e4295c4..6c6e29cb7dcf 100644 --- a/drivers/staging/wfx/bh.c +++ b/drivers/staging/wfx/bh.c @@ -84,13 +84,12 @@ static int rx_helper(struct wfx_dev *wdev, size_t read_len, int *is_cnf) // piggyback is probably correct. return piggyback; } - le16_to_cpus(&hif->len); - computed_len = round_up(hif->len - sizeof(hif->len), 16) - + sizeof(struct hif_sl_msg) - + sizeof(struct hif_sl_tag); + computed_len = + round_up(le16_to_cpu(hif->len) - sizeof(hif->len), 16) + + sizeof(struct hif_sl_msg) + + sizeof(struct hif_sl_tag); } else { - le16_to_cpus(&hif->len); - computed_len = round_up(hif->len, 2); + computed_len = round_up(le16_to_cpu(hif->len), 2); } if (computed_len != read_len) { dev_err(wdev->dev, "inconsistent message length: %zu != %zu\n", @@ -118,7 +117,7 @@ static int rx_helper(struct wfx_dev *wdev, size_t read_len, int *is_cnf) wdev->hif.rx_seqnum = (hif->seqnum + 1) % (HIF_COUNTER_MAX + 1); } - skb_put(skb, hif->len); + skb_put(skb, le16_to_cpu(hif->len)); // wfx_handle_rx takes care on SKB livetime wfx_handle_rx(wdev, skb); if (!wdev->hif.tx_buffers_used) diff --git a/drivers/staging/wfx/debug.c b/drivers/staging/wfx/debug.c index 846a0b29f8c9..f52e7cf885cb 100644 --- a/drivers/staging/wfx/debug.c +++ b/drivers/staging/wfx/debug.c @@ -250,7 +250,7 @@ static ssize_t wfx_send_hif_msg_write(struct file *file, request = memdup_user(user_buf, count); if (IS_ERR(request)) return PTR_ERR(request); - if (request->len != count) { + if (le16_to_cpu(request->len) != count) { kfree(request); return -EINVAL; } diff --git a/drivers/staging/wfx/hif_rx.c b/drivers/staging/wfx/hif_rx.c index 9b4f0c4ba745..36132909a6ae 100644 --- a/drivers/staging/wfx/hif_rx.c +++ b/drivers/staging/wfx/hif_rx.c @@ -24,7 +24,7 @@ static int hif_generic_confirm(struct wfx_dev *wdev, // All confirm messages start with status int status = le32_to_cpup((__le32 *)buf); int cmd = hif->id; - int len = hif->len - 4; // drop header + int len = le16_to_cpu(hif->len) - 4; // drop header WARN(!mutex_is_locked(&wdev->hif_cmd.lock), "data locking error"); @@ -348,7 +348,7 @@ static int hif_error_indication(struct wfx_dev *wdev, else dev_err(wdev->dev, "asynchronous error: unknown: %08x\n", type); print_hex_dump(KERN_INFO, "hif: ", DUMP_PREFIX_OFFSET, - 16, 1, hif, hif->len, false); + 16, 1, hif, le16_to_cpu(hif->len), false); wdev->chip_frozen = true; return 0; @@ -366,7 +366,7 @@ static int hif_exception_indication(struct wfx_dev *wdev, else dev_err(wdev->dev, "firmware exception\n"); print_hex_dump(KERN_INFO, "hif: ", DUMP_PREFIX_OFFSET, - 16, 1, hif, hif->len, false); + 16, 1, hif, le16_to_cpu(hif->len), false); wdev->chip_frozen = true; return -1; diff --git a/drivers/staging/wfx/traces.h b/drivers/staging/wfx/traces.h index 959a0d31bf4e..7298fb948f56 100644 --- a/drivers/staging/wfx/traces.h +++ b/drivers/staging/wfx/traces.h @@ -174,7 +174,7 @@ DECLARE_EVENT_CLASS(hif_data, int header_len; __entry->tx_fill_level = tx_fill_level; - __entry->msg_len = hif->len; + __entry->msg_len = le16_to_cpu(hif->len); __entry->msg_id = hif->id; __entry->if_id = hif->interface; if (is_recv)