From patchwork Fri Jul 31 21:02:55 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nick Desaulniers X-Patchwork-Id: 247299 Delivered-To: patch@linaro.org Received: by 2002:a92:d244:0:0:0:0:0 with SMTP id v4csp3650721ilg; Fri, 31 Jul 2020 14:03:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzHGeE0qfBdcZDZN943O7F6M3CB/kBWPXIZ+ECdzaFaDh8dPEZQHwY+UsFJqh2ZXPO/5S7f X-Received: by 2002:a17:906:6a84:: with SMTP id p4mr6157883ejr.374.1596229386177; Fri, 31 Jul 2020 14:03:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1596229386; cv=none; d=google.com; s=arc-20160816; b=W/nwtLi4W7u9MSb2w9oiC0FFcPVG7PI7Txfx4/YzOJ64bHnhR8ulf0rrtoBJIW0n6u XjEQwe7AF1FcqAhFtCF/ld7whWBmT+T+GzEn4IfY7Fcf96YEupX+bAg3yhUpX6y7PmMX SdeXmorVVmLUTypjUpBGu059XO1i8pkz7hFgaCMsXI7oYbKYL61isAliwqeNsdUQ/y3y VQx2suVJRH5pjIc/XtHV5CLXhmW9KKiuAcRHaFToCRHFvkr4tgYs2e3Qd/JJNYhtT+NC C5NY1k8EaHET5EcqeKX2ubGfagYqzuGID4je61GIOwlLWV6T6axvNw6vh3FeM5ZobJkA rQkA== 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=rYrO3QaZpe4pCSTl1yRu0lLZh2gG3CiEIWOZLrDh+vKe/Ts+Ih8Mf/OsEjyhZsuXNq gxlcwl6e/mY+KXXIpqKp9ac6/bDfr90t8qJ0UyAjgRrbhkOLoFRElbI5msdHBngd2sSq K8aW0zexWd98LwImChnl6nu06MMcHqZdAj0u8uzHiZ+MkjnWKqTivamSKbWrwqS0CsCW wAmQLLk/wFi3aJy3S2u2F5/pFkqVTmTOhclUr7sBuLGSuBmRmDdi6DEUCAto7m/9cJO2 Ts+U6jqWn+FGPTTBjh2HqPCoCSLVVJ7wRabNt6e7o/AZvIY/OvmR6JXhVnEHIvht/36a vgQQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=OYixH7Jd; 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.06; Fri, 31 Jul 2020 14:03:06 -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=OYixH7Jd; 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 S1727964AbgGaVDF (ORCPT + 15 others); Fri, 31 Jul 2020 17:03:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54700 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726884AbgGaVDF (ORCPT ); Fri, 31 Jul 2020 17:03:05 -0400 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E3A3DC061574 for ; Fri, 31 Jul 2020 14:03:04 -0700 (PDT) Received: by mail-yb1-xb49.google.com with SMTP id a14so30473631ybm.13 for ; Fri, 31 Jul 2020 14:03:04 -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=OYixH7JdGmTUIvuymI6eEmbudvjglQTb8eU++fXyFYvmFGyTMWsHGf68RwqWjQwjDi bH5BlLXK88fQI/foBGa6Uttv5zmHlrCw0e3Omym+1dHOM2jJbv9/wx/fBeu88SCHnRNt 8pk8fdPdQLus+g9MMjU9+M4WnmFXuOhT2vRIff9kqrzO1FUg2TRXbCA67y8Os9tP6d4j U9nTKPf82HQJEADqi81cAtsxIlJJIz/TdHocstUQLl0Efl7rIp6M3NFBJUsZcai90t8c 4CAQyRQs9LgcdRsLoofjsp6weXibVf/r1kcmyOKGD7pFuBKvp5jFDo4qe5/3zOihjfir bTyg== 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=mKL3KalOlyy6KxV6nzEqkM9Bf750EKGdODBRCPg+JW2gFuwsXB/xXGezLxfWfY7PPe 1cfVNpwyeaxjyWnSep+Lvn4KJujPGUdnt96SJL8fdhMSrShB6A5fIUbqkwh9+n9s4yVD Ev8qWoH4QVUIcH1hjhtPxLyU6CtFmtMICuEudEFYEpyro4wAsPT4+uaOsVwdYJ5Eyt/3 NaSHLddbVF+3rkGSooKrh/KttRM8cCLzXhgUiVqrseLIXMCNvkI7qkC915Df4R5CPsF2 Xbvd/MVz7gA8pyut4NxJ4V30DkgRkwaIStVt83emyrHpSVld4lsk73znS6if30WFkhzQ lF2Q== X-Gm-Message-State: AOAM531XWXj3wj+/m5obTpAkntNba5t4ZcBK7osOGRiYU44iOrZOM0t1 fqFHUJlpG2oiybZ/0PxKhjuZ0tmHRhXvSCrwlxJD72ycRJrASkgVsH7oS+nLaYzPHgPYFaKB3T9 mUo8Ii4SFaEy3+BDXzeR4wx5IXpBqLmFRZEmvwi70pjFxI9Na9lvrOcYKIyPdi5X9x2muUXAsh+ EAPw== X-Received: by 2002:a25:a308:: with SMTP id d8mr9226993ybi.60.1596229382568; Fri, 31 Jul 2020 14:03:02 -0700 (PDT) Date: Fri, 31 Jul 2020 14:02:55 -0700 Message-Id: <20200731210255.3821452-1-ndesaulniers@google.com> Mime-Version: 1.0 X-Mailer: git-send-email 2.28.0.163.g6104cc2f0b6-goog Subject: [PATCH 4.19] 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)