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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id A520DC54FB9 for ; Mon, 20 Nov 2023 11:15:25 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 40D7E6B043D; Mon, 20 Nov 2023 06:15:25 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 396736B043E; Mon, 20 Nov 2023 06:15:25 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 210AA6B043F; Mon, 20 Nov 2023 06:15:25 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 07FB86B043D for ; Mon, 20 Nov 2023 06:15:25 -0500 (EST) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id D970D16071E for ; Mon, 20 Nov 2023 11:15:24 +0000 (UTC) X-FDA: 81478076568.18.7C6DCB9 Received: from mail-lj1-f176.google.com (mail-lj1-f176.google.com [209.85.208.176]) by imf20.hostedemail.com (Postfix) with ESMTP id EC83D1C0018 for ; Mon, 20 Nov 2023 11:15:22 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=To0KEKbL; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf20.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.208.176 as permitted sender) smtp.mailfrom=ryncsn@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1700478923; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=VGvdee3TQIpF1SI724cXO2Msx6guU5EDf9Sws5t+jG4=; b=2qeNdBkfxIrg5nUxSOx+wr6AhkymvVlFR95WICkWS9Lf74dxQNdooCN3i56MUBlbzqkPHH WYrCVn0UN1sATFCjIvVEwZFeCq2GSpsKOY2oKAItBgR9IrqIDhQyP9dT+IiIZtJcA0b6Q1 NVa16TYeZJs2AolCQ5pWwCiUGauVQl8= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=To0KEKbL; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf20.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.208.176 as permitted sender) smtp.mailfrom=ryncsn@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1700478923; a=rsa-sha256; cv=none; b=xy8+qVfj84x+Ax74FkBdvC+IhzcqAdKGUAl80YkdxwufFdyh7IQSqNyYTiIOCir/YusohT dVLDrl2rjhNLFfxVoGJRXa0rjn9Fa89wU+EfAVq9R0JWOUYtmSCztIbFXu1k4orFxo9mwR GHGgZCJAZH49765jxTeZshvx/s8pakI= Received: by mail-lj1-f176.google.com with SMTP id 38308e7fff4ca-2c887d1fb8fso1357051fa.0 for ; Mon, 20 Nov 2023 03:15:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700478921; x=1701083721; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=VGvdee3TQIpF1SI724cXO2Msx6guU5EDf9Sws5t+jG4=; b=To0KEKbLjtwb2Vd0MhSNP5dyKHJoxX7o5lX94PhJb9o6JbZyIbSL3BkgxBLv0hhuZb 9t0Uqi9LADw6vnogDHMrT0eDaC7g1zMNUsPLpskIE+RsY7FpRUSu8RkINazVDnzwq/Nc iP1iVttD/E1iygD7AxLeAxkz9AmMgyP9Rc0d1B3qvG0kEb/G9ufwfUJHwnXeZ6NayHfe p77OAdeAGWUK9AcxuFOdHYpZCTdPY9qHJYvxdNkO5Jx7Uml5bB/UE5nzv7Z8roahXGvL 80Sxrj5Q7qJPCfPuboh2CRR/NiHmOaQHhaa2cmUJ9nRfrolPoWSP/ljaHhnHJtpxzkF/ qi+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700478921; x=1701083721; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VGvdee3TQIpF1SI724cXO2Msx6guU5EDf9Sws5t+jG4=; b=EJy36xDLDVO9hLwGLGeMS/4CkoLDo+Fx6lZw6p0qv0w8uDv8AJ+38jiTo0eH5nzSco 5G3eZWb+nGk7qWX47mW2MNbwVP8tA03tqRn5kD/Qyu/F4yKRZnCjlEzxZPO8rdN8wNPC UOxYrVIluADrhsSZpmUptFdOMHJ8HeWje7iTvdoDBGhEjgoGnMqBRsqRXku7rcgjpHpt Kyk+6AcTXHMdQQuiqjg5UcJcMh+LouoV6ay4VpmVYas36akYpiaKkl3dNR47Ep5/aHDD nFN+eoRqffAksjezTTLD7bCQ7i+IGOFWV7Rm7sWtCzEjt5r7QpgFHHk0dgdJLEEjLC4S sv+A== X-Gm-Message-State: AOJu0YyfN9xn9eXhhv69p7/nUBsJfIpB4hq6cVf/WN2Q8J5hIBj+Yj8P jLa2BbUv6L4l1gF/tcyUqsAO40YNy+KL38p64oc= X-Google-Smtp-Source: AGHT+IEkwW8gqxESIIlgmnHShYOfxdcUpZ6R5NoJDIQXIwyCfF3drMe5rnNL4qDW6gsr7j4ZaZEVaM8BwvHfRAKqUUs= X-Received: by 2002:a2e:bea0:0:b0:2c5:56b:cbcb with SMTP id a32-20020a2ebea0000000b002c5056bcbcbmr5989090ljr.9.1700478921255; Mon, 20 Nov 2023 03:15:21 -0800 (PST) MIME-Version: 1.0 References: <20231119194740.94101-1-ryncsn@gmail.com> <20231119194740.94101-2-ryncsn@gmail.com> In-Reply-To: From: Kairui Song Date: Mon, 20 Nov 2023 19:14:59 +0800 Message-ID: Subject: Re: [PATCH 01/24] mm/swap: fix a potential undefined behavior issue To: Chris Li Cc: Matthew Wilcox , linux-mm , Andrew Morton , "Huang, Ying" , David Hildenbrand , Hugh Dickins , Johannes Weiner , Michal Hocko , LKML Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: EC83D1C0018 X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: zioaw15ud1wwptafynh4tahw61cjzpyi X-HE-Tag: 1700478922-782353 X-HE-Meta: U2FsdGVkX1+DY5n+0IvcBkXmkJK2AHuQ+XQqPSrlwHxEAL/RfPa3HUr61g5xkhYqp9XqRTxwF42ndldN8pPACDWFHn2QupiKr8L53BJHmfVpvS9rYibNnqk0fzKV5B3+2Ky+UCjY6Fm5vmM1itIx5tGkkOmoaqDSZe6o8jO/PEPQv4l9Q+SYqAaRc/akIoT/qeyfYlSmyT05TialtQPuBuqNnzTsCTAaZS9WaukQb8ExZhc0NbTd5PgvaHPsZjJISLIOzkSDsgoGMr+KB6NelKdHtALGRYBGg7gzwjrHc3YWDLDbUYSqapXiTczXwgz8PvAqRwmyPjd0B+K1QAExfwTqKzw5b8Jjuzx013YuLQ+fSzn0JV9NnGDC3CTLb1n6BIButhCBBNAoBiRloevI8Qz32+wrRtKOupM5HtnCk85LSHumvkSgtbGTY56lsWh8dlJMNnhQDUgYNLRKxOji0DFAiIvxXFc6idhBnfYLkOX2XweM3ARFLyvckuDecSJC+ncYb0YIOirmWfXAWI5fOEsBYX3SpzjZYzojzasfV1Ycyntz6eYGCyytE8ubobEXLA20xm7oKlkElr4UFUAWOMae1p8BS/hupZa61PLmgOaGFl9xdOZeGNme1AWyXwlxJsFnxeiNPbNg6Vn83yzl3j/g5q3HHbRYIUy98MKZbuqTSObAK+T0RWodnHpaqccDah/jU3mYlwLNKSvuWxB6QT04CBy0SNzFVm6EL959xYX6LfwtyBBPjg3QyEHWyLPf5h1KfSQ1iMx+rlpBJ+yg25vRcnoX+SpShiup703AeMcARj3pSkU8Fmz+zGNoUwKo9YnqT1bHZNGABNI7eBBzhQYMPSqtpPFzfaxegsojOQ+tqtHUSbkLq7gs3ghCJuFfcb6mMRZHZgxNJqmsf1JmR7+19Keg3SxE/y4EAUsS95KVCaI8gckZNr8Tq1KB0afdUEElpnlqWvoiQdR3oQW LXCZjtB/ w4oaiyMYm9QYuZFroO0w07huARMknoP2QDQr79VPkUMEz6s5uKNzbsQMS3+bHsAuHZfxxkkZ5wgNHpjSEAcnJJlBYO00QSSpUdK8qQJ9/AuhDFgZ5V2NeGGkBH4p+ALSU+eNkVKomthGRGentYdgD9JFF/qSz4RDGDmwgN3xPucOx92d7O0Kz1ttK0eBbscsJEJcBAJRvk0dh3YTRHSPWHEMdmMQpkbF3FQauj9wQlZmNk67uSsw96JdX3CDJpEj9GFH8h85wrtHS0AbDpv149mThC4uBvi64HQ73sMcIfGjmOiJfRdiF++BO3OfvIugQGWhrfsGiSD+nStCWoGc1U9L+lKPTrsChI1994cvbiolbQRzvXKbt1u9/7i3HptOIUMcaEz+IMUs+Swi7Ft38liXZVQNPEy0CkSt8Vdp+CSAFDHNY3jb9n6fDD/LXX5g10wDmSO3VY4vL+FScK5pH4h0T+artOpT6RnWazZqavwF6+4x4eRuAWoxk+cJhWsVAOTLyRdFZsg8yWsNpSxm0qme/wA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000026, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Chris Li =E4=BA=8E2023=E5=B9=B411=E6=9C=8820=E6=97=A5= =E5=91=A8=E4=B8=80 11:36=E5=86=99=E9=81=93=EF=BC=9A > > Hi Kairui, > > On Sun, Nov 19, 2023 at 12:55=E2=80=AFPM Matthew Wilcox wrote: > > > > On Mon, Nov 20, 2023 at 03:47:17AM +0800, Kairui Song wrote: > > > From: Kairui Song > > > > > > When folio is NULL, taking the address of its struct member is an > > > undefined behavior, the UB is caused by applying -> operator > > I think dereferencing the NULL pointer is undefined behavior. There is > no dereferencing here. It is just pointer arithmetic of NULL pointers, > which is adding offset of page to the NULL pointer, you got NULL. > > > > won't lead to a real issue, still better to fix it, also makes the > > > code less error-prone, when folio is NULL, page is also NULL, > > > instead of a meanless offset value. > > I consider your reasoning is invalid. NULL pointer arithmetic should > be legal. This patch is not needed. > > Chris Hi, Chris and Matthew. Thanks for the comments. Right, it's just a language syntax level thing, since "->" have a higher priority, so in the syntax level it is doing a member access first, then take the address. By C definition member access should not happen if the object is invalid (NULL). Only a hypothesis problem on paper... This is indeed not needed since in reality it's just pointer arithmetic. I'm OK dropping this.