From patchwork Fri Jul 31 21:03:08 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nick Desaulniers X-Patchwork-Id: 247300 Delivered-To: patch@linaro.org Received: by 2002:a92:d244:0:0:0:0:0 with SMTP id v4csp3650902ilg; Fri, 31 Jul 2020 14:03:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwRWniWjHUsnZy2FYaYcW2qWLL1a2lTY6XA8d40aL+guhbr3SODylqZyVBchZgtLs0jM6wG X-Received: by 2002:a05:6402:403:: with SMTP id q3mr453157edv.12.1596229398976; Fri, 31 Jul 2020 14:03:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1596229398; cv=none; d=google.com; s=arc-20160816; b=mNUyyF1K0qpxXhluxPV3OzpEDrPVW9g1hWE0M5Hm/3khLUA8RX41oY3dTnUp2nqj0N 27HjGuP61iKF6O9M3WPgoRsHteaa1w+Q4iZ1l6SjKsEf8bUDR4y/rNI8WV/pPgpoocMg 0xdGj85MTJfJv4x/zY1B4tWHYhEnGWWTKH9B5NlRIxbLCb/zmA/vF/jUArpqNiRG4r8Z gxOSeCVeTXTp0E/kTdvFki44RkP0X4xa2l3EjeCQNl87kSrEBGY+bF5UgnATKdOENsls STjvU3xdCdCxL1GAdieoHCGCwnv/UkRfLUiPVfB+jNI/INCv6NdD2ciGcDzGD0jbtXTx 74iA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:from:subject:mime-version :message-id:date:dkim-signature; bh=1Eh/wQ40rCPdQV1JiRjjRBdPYnmIc11YaQZLvEs3Mp4=; b=omsEZ/g+sXxSgvnw5s0AAroYA/Pm9JVGwX+q/XTDGUAXzm5kYoX2X6vpHCKc21cyIt 56ZBVmuHaLdTzACDO8xerE26OtSldVhPTpdMEaNyYRlNP136nygQ9Ci86HGhBE+0nWaN faKiJ+5fb2Wxd7xrt34gbTPsey+WgBbVSg9shaQERJdmSjn1zVgCDMKNbrpKaBJPvl+c 8EDpYK34hzsdlrf4UXq7uOubROCjbwIBYXkU6Zja2S65qrjX1r+j4naIKqDCVp67+hsP C9Rcv3Zom+7fMaHSPTdsGWfjrPlG56XNaFQrwoEdZB8oW+K7mhH2LP3YwqC6A4vzC/Pe vQRg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=cmTvj0Ll; spf=pass (google.com: domain of stable-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=stable-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y8si6110863edm.463.2020.07.31.14.03.18; Fri, 31 Jul 2020 14:03:18 -0700 (PDT) Received-SPF: pass (google.com: domain of stable-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=cmTvj0Ll; spf=pass (google.com: domain of stable-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=stable-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727975AbgGaVDS (ORCPT + 15 others); Fri, 31 Jul 2020 17:03:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54736 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726884AbgGaVDS (ORCPT ); Fri, 31 Jul 2020 17:03:18 -0400 Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F1AF8C061574 for ; Fri, 31 Jul 2020 14:03:17 -0700 (PDT) Received: by mail-yb1-xb4a.google.com with SMTP id 7so37326208ybl.5 for ; Fri, 31 Jul 2020 14:03:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:message-id:mime-version:subject:from:to:cc; bh=1Eh/wQ40rCPdQV1JiRjjRBdPYnmIc11YaQZLvEs3Mp4=; b=cmTvj0LlS+aFzUyt0QVz9Ncl3mqAEGvH9mSk504JWN1Ll5T/mhAgV/roaOA/a/OXZm bEdsYGpawU0pSmNKfbhRtB5raLR02o92TdhxC2BiGnCYqtqwx89daFGBrx/1x+Dy7hZ8 DVF7i4LoPe+roqVbY0Tl7sD+QjjM4Kq18kzT0rql5a20dcwujYMxzixAITKvZm6KZHDZ Fco1fXT4gJ2yloEdndM/ZBGQ/bFYahKem4BhWaUK/EB5/E3fsD3l+SrIM45iSTZlcGHe OHk+DMRQAakBFFLhzMA1FTiSX4TWQ8n460xngf6JhPfDk+bzfoOeITaGNiNLhNtB1qL9 FOXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:message-id:mime-version:subject:from:to:cc; bh=1Eh/wQ40rCPdQV1JiRjjRBdPYnmIc11YaQZLvEs3Mp4=; b=ledokFcvocGmrOOoEwtR3PCbfllv5S3TrvXJTEvo3XbF9cKUgnHUSKobLCY9faZ5ey 8FS1bI1Rl6hHNRKNbjtWhElwVUALModbhV9Ncf1RlALITYxwRSwwDsC70ixbkxmTKREs sU3aaHXmPFJYG9O4jNiT9rcYVDlXmEgGn6jd/rjW4JNb8wJjcKK0p7ra+rCsZYM4pm0a tnc0IeWADz+CaremtBm4EAOcKN9wN3w/L2IZRpAW/zqJZeAay7G6Wqa3AfOL/LlpWwAa r5TWj7ID7Y42tcUeicshQ4myMPgFPJW5eMPRxi/ewvHY4JDaeAKhqg9p1qmtrO9vXrAz DlLQ== X-Gm-Message-State: AOAM530qxGPyvmCMyL1GCL6zvBFyoiaYYtitL+F5kAcsRw7brY3iCvPx S9aK7Mh46M7PjvKeXJt6yUchwJKpebkJ2plQ4hSNVymfgR2C933NgEmHrDWJTAW+RXb5jFBiHgq ZGiOPQVltb6id2S4oCFVbogRwvIA/YweJ1TkbAZ132Of9vvsozW1IuFVfoSw9Mi40EmvH2u5DGL NJQw== X-Received: by 2002:a25:40c8:: with SMTP id n191mr8739974yba.436.1596229397059; Fri, 31 Jul 2020 14:03:17 -0700 (PDT) Date: Fri, 31 Jul 2020 14:03:08 -0700 Message-Id: <20200731210308.3823395-1-ndesaulniers@google.com> Mime-Version: 1.0 X-Mailer: git-send-email 2.28.0.163.g6104cc2f0b6-goog Subject: [PATCH 4.14] wireless: Use offsetof instead of custom macro. From: Nick Desaulniers To: stable@vger.kernel.org Cc: Pi-Hsun Shih , Johannes Berg , Nick Desaulniers Sender: stable-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org From: Pi-Hsun Shih commit 6989310f5d4327e8595664954edd40a7f99ddd0d upstream. Use offsetof to calculate offset of a field to take advantage of compiler built-in version when possible, and avoid UBSAN warning when compiling with Clang: -- 2.28.0.163.g6104cc2f0b6-goog ================================================================== UBSAN: Undefined behaviour in net/wireless/wext-core.c:525:14 member access within null pointer of type 'struct iw_point' CPU: 3 PID: 165 Comm: kworker/u16:3 Tainted: G S W 4.19.23 #43 Workqueue: cfg80211 __cfg80211_scan_done [cfg80211] Call trace: dump_backtrace+0x0/0x194 show_stack+0x20/0x2c __dump_stack+0x20/0x28 dump_stack+0x70/0x94 ubsan_epilogue+0x14/0x44 ubsan_type_mismatch_common+0xf4/0xfc __ubsan_handle_type_mismatch_v1+0x34/0x54 wireless_send_event+0x3cc/0x470 ___cfg80211_scan_done+0x13c/0x220 [cfg80211] __cfg80211_scan_done+0x28/0x34 [cfg80211] process_one_work+0x170/0x35c worker_thread+0x254/0x380 kthread+0x13c/0x158 ret_from_fork+0x10/0x18 =================================================================== Signed-off-by: Pi-Hsun Shih Reviewed-by: Nick Desaulniers Link: https://lore.kernel.org/r/20191204081307.138765-1-pihsun@chromium.org Signed-off-by: Johannes Berg Signed-off-by: Nick Desaulniers --- Fix landed in v5.7-rc1. Thanks to James Hsu of MediaTek for the report. include/uapi/linux/wireless.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/include/uapi/linux/wireless.h b/include/uapi/linux/wireless.h index 86eca3208b6b..a2c006a364e0 100644 --- a/include/uapi/linux/wireless.h +++ b/include/uapi/linux/wireless.h @@ -74,6 +74,8 @@ #include /* for "struct sockaddr" et al */ #include /* for IFNAMSIZ and co... */ +#include /* for offsetof */ + /***************************** VERSION *****************************/ /* * This constant is used to know the availability of the wireless @@ -1090,8 +1092,7 @@ struct iw_event { /* iw_point events are special. First, the payload (extra data) come at * the end of the event, so they are bigger than IW_EV_POINT_LEN. Second, * we omit the pointer, so start at an offset. */ -#define IW_EV_POINT_OFF (((char *) &(((struct iw_point *) NULL)->length)) - \ - (char *) NULL) +#define IW_EV_POINT_OFF offsetof(struct iw_point, length) #define IW_EV_POINT_LEN (IW_EV_LCP_LEN + sizeof(struct iw_point) - \ IW_EV_POINT_OFF)