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 BE466C77B7C for ; Wed, 26 Apr 2023 22:32:03 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 243916B007E; Wed, 26 Apr 2023 18:32:03 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1F36B6B008A; Wed, 26 Apr 2023 18:32:03 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0955D6B009C; Wed, 26 Apr 2023 18:32:03 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id EB45F6B007E for ; Wed, 26 Apr 2023 18:32:02 -0400 (EDT) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 8A92A12041D for ; Wed, 26 Apr 2023 22:32:02 +0000 (UTC) X-FDA: 80724991284.27.518C0D6 Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com [209.85.218.54]) by imf22.hostedemail.com (Postfix) with ESMTP id 46398C0011 for ; Wed, 26 Apr 2023 22:32:00 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=google header.b=SK5Whvdh; spf=pass (imf22.hostedemail.com: domain of torvalds@linuxfoundation.org designates 209.85.218.54 as permitted sender) smtp.mailfrom=torvalds@linuxfoundation.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1682548320; 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=SVW5WV/KqwfqyBwNIu5H8m6OJfcQGZ/T7DvmWxmWHzc=; b=CVSlqQTIJwo6QjZBM5TMJjqNpSjy8OdTJkhjzjnEWHgEuLwcY2sEIQKw92vmUAELN4i80C Zme2LlD2ggNjqcTWZ8pdCqYapJGzCbZdmGevZUR1CrpsMGxFIfw0nm2CeUoFsfDhkDT/eC r0KKSwBu2bVmq8b2aK2zs0j0BiTQrZc= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=google header.b=SK5Whvdh; spf=pass (imf22.hostedemail.com: domain of torvalds@linuxfoundation.org designates 209.85.218.54 as permitted sender) smtp.mailfrom=torvalds@linuxfoundation.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1682548320; a=rsa-sha256; cv=none; b=m+zmNtvFqVg0uPtsAP/Cg+gf5ji0MB45wipFNCRbfWe+NXh4N+6gvunb1k9PzUuuEvEgMD AZ39I6CYPfUCUWylG8U8O4drWtUaRkGC6oHcrWxmdMzR/Glq3jxlvPLedzgpsS47qGa1k2 hw2t74NDpslvxxQeAjWodd3HIBNiWCY= Received: by mail-ej1-f54.google.com with SMTP id a640c23a62f3a-94f6c285d22so1451700066b.2 for ; Wed, 26 Apr 2023 15:31:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux-foundation.org; s=google; t=1682548318; x=1685140318; 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=SVW5WV/KqwfqyBwNIu5H8m6OJfcQGZ/T7DvmWxmWHzc=; b=SK5WhvdhD+pFQAgeMnn+cxG4NVGIZi8UCWzoAoYEwd6MfKAHL4hGv9hryJHO6lbFKN 3cNxiSH2NXz4vM4JDhm5QzJ8OtcUhZ8mZnUNXxzsxaOZmI40cIb6uVQ2OP4uhSsgnZ/5 EkWDO8usQILfZAod62VsNHOEm6mbdk3qQCioM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682548318; x=1685140318; 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=SVW5WV/KqwfqyBwNIu5H8m6OJfcQGZ/T7DvmWxmWHzc=; b=OEUGvz7Wi0t+m8sTkljhOCoHY9YlH/WoYx+a9JoxXQBl5XBP148HujEavNeHhmEfMJ S2/EREg/V+iKtSDUs3cGOf8Y5eBufUH2280qoDi3tvJua2LwLiknSbPCmn55R/cRci7c n/upZTmo6FlsQkR/0+OGY0sx0p8ieLvIg8P2fH242DzlNh4fdFL6rdM4fJ25J84r0RMx ZFYUMpVK2NBtvpvno0PuvQ/qbuR/u2+bgPra7XkUQpnvu3F//WXhkWJrUZxZMGI9aoSF PT68x06r0ezkDRCNiYfY6E6cxGYHgtK0fXELuvlQfEGP+camT6+1TFVERMncsOJ3yIwj FcEA== X-Gm-Message-State: AAQBX9do+hsmZ6Shu4b9OtHpPJNXiXatH8T1ow4r6gFQcLpJWuUNo/SH hFBjHhHf2r7tZZ2cwPH0U4LowKCpWbWEkrrdNaHGqQ== X-Google-Smtp-Source: AKy350ZRWy3L6Lp/RcheCWFOmVa8VpG/+i0DdSUqoEuBTxpI1kNBzIGzXYrIiOi+m9eUt8Sk5ZVruA== X-Received: by 2002:a17:906:5a68:b0:94e:ea07:4b87 with SMTP id my40-20020a1709065a6800b0094eea074b87mr18056845ejc.27.1682548318262; Wed, 26 Apr 2023 15:31:58 -0700 (PDT) Received: from mail-ed1-f44.google.com (mail-ed1-f44.google.com. [209.85.208.44]) by smtp.gmail.com with ESMTPSA id w27-20020a17090633db00b0094ed0370f8fsm8889490eja.147.2023.04.26.15.31.57 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 26 Apr 2023 15:31:57 -0700 (PDT) Received: by mail-ed1-f44.google.com with SMTP id 4fb4d7f45d1cf-506c04dd879so13374280a12.3 for ; Wed, 26 Apr 2023 15:31:57 -0700 (PDT) X-Received: by 2002:a17:906:224d:b0:94f:3eca:ab05 with SMTP id 13-20020a170906224d00b0094f3ecaab05mr21379641ejr.59.1682548317009; Wed, 26 Apr 2023 15:31:57 -0700 (PDT) MIME-Version: 1.0 References: <20230425041838.GA150312@mit.edu> In-Reply-To: From: Linus Torvalds Date: Wed, 26 Apr 2023 15:31:39 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [GIT PULL] ext4 changes for the 6.4 merge window To: Nick Desaulniers Cc: "Theodore Ts'o" , Nathan Chancellor , linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 46398C0011 X-Stat-Signature: a3ioz75wdrdukcj7854okrfkmpyqbwpy X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1682548320-389246 X-HE-Meta: U2FsdGVkX1/s4bI0mDANcVMJ2wZEozJZBWmNeW3EtmBeOFJdQ1+v6sfVS6ulFOYURZU29GZVDcr9VCg3d+tEvQhrvMMlbKhZKrBP6jz+98gw/hGaWkOA2oNYPKXH51ulFMUCEeAN3CcX8qVFI3NJ3dAjD40+l30p0Q6BXo6Pge3WfP6PcdraYKSF/XG4iicDMZqcJYQVlB8vtzD0kldw6JdITCuRcQO50bghXyK3aeVw1/IO/AGRna9FJJmLuZZytMepch5Y48d6zGZ4ddKfiF2PyYiaNAexa2TkculjnKIjQ0tcQLAuvY54/gs3kHNVTimdRLDM7RbfzXh0zFG5M4f8f1B75TISzsXO1AROdgIpTHMrUM2q6jQqlBdoKyXNl8/3SzVjjPrX+jZzQP8pmNJCU5b20UySINOdcF3l52DCYCF7/USgJl9JiSezg7OH6v4HnPsjVlJbgh4DmCHT8DJMRgMtCDXAVVqhLtpdbNo9e4PvVyUtT1IOg8diWIvJXBAWy8aHEnf/Mdav1QEUvjWAmMjLn3CEFL4Trwru8/98Rk0VlSW6Y8uX6wAGM5e7Ln7/4fnPkLKto4O77G6RIxvT88FvtI8vJ2mxwN7slsMWQ0KTx9rNBWfPxIXkxyjvH+gsUNuD8qGF5y72NdBiLgO80fkPXD8q/9T3Cw/KyUpTiAq/2gnNTRVc/iiaYSujU38QQ/0vfNef3PjGGDeRHk9Q7ClUxGzMLuCh1IaAjpAuEEq7BcajajJJ+WXMl3SA+EkqWIndUjw5JTVTtgZahVVlqb5mPca+FPa2WJGSP4dEfZNwh4lttyX5jpaQmNG/dNoXcDx4warI8+VGe8W5jvDueepVU0CLjO8G4KoI2vX1pn1H7cjyhpN6KZeUJRGXa+Q9IBvmI49Z48PSpq7c7kmWxidvHvVFthhHea3f+1PBEsRD+NCPozYCSqQT/7OlwQNeqJYfxLzp3mEigqE ZoZoyZ8s l3A+6uR4D4728MP4dX8suHwKCC+Nh5KUIlSRggedQ4qIQEv0C4e2i8XwBrGbG9RRGddDGypD77V+sWQ5bXN2DP7kCniUUoD2j6lrfmGxti6G1YkNBuQDHgHcXZZiHEN6/ZzjHsFp5XYwHttXm4CiEIp6ZvFZsxwasV9A1fE/atcJcDBhuYnEbmPcoRxkf2KamOoSG2PYrGKICPC5lVgL77SKbKhEB46jJYBEpSLmgAfDvWVaTq154Vtmg3MYzOWXB6m1TuKs4Uyerzjw1vkWcGowoL8e3EdSwZK+vqBHWQMV/QfLQid+Au9/qwmPHXA43QZZ1vRpRP82yQW8sKQv1Tcf2105XU9ktUIUicDR7Tj42Wf/XwBkkfgXs9E1TbIx6w+LgIAJXUX4qZaj9ihtadU6FJOVWpCmMvR0tBhQWp/jt9dO9bQwEpyHGV0Wfo+3RTcW5KzbCAg9px5GIoJFrrPyw0fAfJDIgjxx6gx5nSWeDGj1vj1bKhz/2zEPM+GvuTDG6wQdJ/DdzJ70= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Wed, Apr 26, 2023 at 3:08=E2=80=AFPM Nick Desaulniers wrote: > > Is this what you had in mind? > ``` > void * _Nonnull foo (void) > ... > void bar (void) { > if (foo() =3D=3D NULL) // maybe should warn that foo() returns _Nonnu= ll? > bar(); > ... > linus.c:8:15: warning: comparison of _Nonnull function call 'foo' > equal to a null pointer is always false Yes. HOWEVER. I suspect you will find that it gets complicated for more indirect uses, and that may be why people have punted on this. For example, let's say that you instead have void *bar(void) { return foo(); } and 'bar()' gets inlined. The obvious reaction to that is "ok, clearly the result is still _Nonnull, and should warn if it is tested. But that obvious reaction is actually completely wrong, because it may be that the real code looks something like void *bar(void) { #if CONFIG_XYZ if (somecondition) return NULL; #endif return foo(); } and the caller really *should* check for NULL - it's just that the compiler never saw that case. So only testing the direct return value of a function should warn. And even that "direct return value" is not trivial. What happens if you have something like this: void bar(void) { do_something(foo()); } and "do_something()" ends up being inlined - and checks for its argument for being NULL? Again, that "test against NULL" may well be absolutely required in that context - because *other* call-sites will pass in pointers that might be NULL. Now, I don't know how clang works internally, but I suspect based just on the size of your patch that your patch would get all of this horribly wrong. So doing a naked void *ptr =3D foo(); if (!ptr) ... should warn. But doing the exact same thing, except the test for NULL came in some other context that just got inlined, cannot warn. I _suspect_ that the reason clang does what it does is that this is just very complicated to do well. It sounds easy to a human, but ... Linus