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 416A9C433EF for ; Wed, 5 Jan 2022 19:13:50 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C8D816B0071; Wed, 5 Jan 2022 14:13:49 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id C3D4F6B0073; Wed, 5 Jan 2022 14:13:49 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id ADEC16B0074; Wed, 5 Jan 2022 14:13:49 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0201.hostedemail.com [216.40.44.201]) by kanga.kvack.org (Postfix) with ESMTP id 9A6AE6B0071 for ; Wed, 5 Jan 2022 14:13:49 -0500 (EST) Received: from smtpin29.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id 524A295AEB for ; Wed, 5 Jan 2022 19:13:49 +0000 (UTC) X-FDA: 78997182978.29.99A3052 Received: from mail-ed1-f48.google.com (mail-ed1-f48.google.com [209.85.208.48]) by imf12.hostedemail.com (Postfix) with ESMTP id CA7D040002 for ; Wed, 5 Jan 2022 19:13:22 +0000 (UTC) Received: by mail-ed1-f48.google.com with SMTP id w16so319353edc.11 for ; Wed, 05 Jan 2022 11:13:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux-foundation.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=aSZJ6lOXxe1t+UE4RzgH09dpup0DIvKIanGw3pdRDu0=; b=LOQbagsAdCakbS9BqHLeR4QV4V4qMq4xIFEygeAnWmmSU11M1jK8usHrq8Lzs4XUvk zUO+dRpDe/bweElJ9jb+PMTqN3LgVkzcNPfGMMrZXmiRYYOK1TQ6tlyGi4Gi9kewBvvW SV2Zkd5JvGn5e05wPGXEjDQUbYeVmq5+SQeNg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=aSZJ6lOXxe1t+UE4RzgH09dpup0DIvKIanGw3pdRDu0=; b=wiCGa8cQoCGktC5RB0rNutHDGJIVkWceKmsOwtMJzv5KHgsdMomctpEj5dgcc6jvG0 56hKqQhlYd4fZv9JmDyatUxfTmd7nlhurBbX6ofOtMXrfLc4xpCj0WR5z2yCweznZGGT /AxYWnudJfdjOn/ibCCKBT1Iladq0K66yQozU+2fU2U56xcblp/nwq6Od4ASS6A8qWXB FikErjkKFVHKdQTySnsEP55hYi6phGxczLzm1+b1ISF1iqJn+VVo5522/in3OY2zXThV j98Jl6wKMAhAztXzr92nyxyhCFlmniijJjVSA/5c84+g4PxKMeGSUh/1H7KtVUphfy7V t1Aw== X-Gm-Message-State: AOAM530Yar0t9vCVb8R6CQMbtHRna3VJx0X2ffPAdK9jHcEaKnCeXWf6 SR+OcdC3uDYp1vjPPCmUy6jguJV6PXVYRRtPmfA= X-Google-Smtp-Source: ABdhPJwIx0KlJj2s9d/sKxEYtq9HfzpSIzzonzGAnN4vsQv+YMaH22tlpcdglkot8eW92LsTDvETXA== X-Received: by 2002:a50:ef14:: with SMTP id m20mr22257111eds.238.1641410027704; Wed, 05 Jan 2022 11:13:47 -0800 (PST) Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com. [209.85.128.51]) by smtp.gmail.com with ESMTPSA id z26sm15954448edr.11.2022.01.05.11.13.46 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 05 Jan 2022 11:13:47 -0800 (PST) Received: by mail-wm1-f51.google.com with SMTP id v10-20020a05600c214a00b00345e59928eeso2530228wml.0 for ; Wed, 05 Jan 2022 11:13:46 -0800 (PST) X-Received: by 2002:a05:600c:4f13:: with SMTP id l19mr4148156wmq.152.1641410026707; Wed, 05 Jan 2022 11:13:46 -0800 (PST) MIME-Version: 1.0 References: <000000000000e8f8f505d0e479a5@google.com> <20211211015620.1793-1-hdanton@sina.com> In-Reply-To: From: Linus Torvalds Date: Wed, 5 Jan 2022 11:13:30 -0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: psi_trigger_poll() is completely broken To: Eric Biggers , Tejun Heo , Zefan Li Cc: Johannes Weiner , Peter Zijlstra , Juri Lelli , Vincent Guittot , Ingo Molnar , Hillf Danton , syzbot , linux-fsdevel , Linux Kernel Mailing List , syzkaller-bugs , Linux-MM Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: CA7D040002 X-Stat-Signature: 44cukegdx3ty5gbrahy5h1isbnm3ehfs Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=google header.b=LOQbagsA; dmarc=none; spf=pass (imf12.hostedemail.com: domain of torvalds@linuxfoundation.org designates 209.85.208.48 as permitted sender) smtp.mailfrom=torvalds@linuxfoundation.org X-Rspamd-Server: rspam11 X-HE-Tag: 1641410002-383202 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, Jan 5, 2022 at 11:07 AM Linus Torvalds wrote: > > Whoever came up with that stupid "replace existing trigger with a > write()" model should feel bad. It's garbage, and it's actively buggy > in multiple ways. What are the users? Can we make the rule for -EBUSY simply be that you can _install_ a trigger, but you can't replace an existing one (except with NULL, when you close it). That would fix the poll() lifetime issue, and would make the psi_trigger_replace() races fairly easy to fix - just use if (cmpxchg(trigger_ptr, NULL, new) != NULL) { ... free 'new', return -EBUSY .. to install the new one, instead of rcu_assign_pointer(*trigger_ptr, new); or something like that. No locking necessary. But I assume people actually end up re-writing triggers, because people are perverse and have taken advantage of this completely broken API. Linus