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=-20.6 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT,USER_IN_DEF_DKIM_WL 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 DAF3BC433E0 for ; Fri, 31 Jul 2020 21:03:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B6DE2208E4 for ; Fri, 31 Jul 2020 21:03:18 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="cmTvj0Ll" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727975AbgGaVDS (ORCPT ); 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-Google-Smtp-Source: ABdhPJydE0qiSLfe0EytQpTa/RBJXtPsf3bHadz0qIJPsnGFOVHso/rVidbE19oah1KnUICw4W7pngE4F05U0YIHjdY= 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 Content-Type: text/plain; charset="UTF-8" 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: ================================================================== 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) -- 2.28.0.163.g6104cc2f0b6-goog