Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp6238175rwd; Wed, 24 May 2023 12:50:02 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7QJleeWTn9eNennLFN1l5Wvj67qkVE9g9T+8uWQzMl9p9E8kHweSJTrnXQq4zBUy43joWs X-Received: by 2002:a17:90b:1056:b0:252:94b5:36f1 with SMTP id gq22-20020a17090b105600b0025294b536f1mr16100226pjb.27.1684957802178; Wed, 24 May 2023 12:50:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1684957802; cv=none; d=google.com; s=arc-20160816; b=zEOVZuYtOy7Uaeq0pe108iBYYqT1QWsmIDKUPfCHEeWL7zIWXm1iyWpTz0DPTHw9LF 1FkhwMDO9gN+YPQuwk3kiRcVwV8awmg9jsLiGN1sh2Qx/feKskJrrxEi6GQmBG2cl0rI J6QoUF6CwY0HZ18w7kfL/IQXsj4ESDMV4UhTbG24nFApPs4tibTTufN20DREmqEAKGqU DtHyrpc9scPJLkJ801rhteuQUpGLVtseFa9Xwx7OY6BUBJmgmN/As6TknmpCj+AiRd9u LrVyRHnoPaLF0Yrn3X5yeM99NOk3piIGcrAjk0bhJoBuEPQtb/DYb+pm1RQTDR4BTTAE iWTQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=S6uverP8/Z1wMx7w7sWuXWr6bokp1v2GsI7LJs+SC6E=; b=BNga2WSmjTUvoRe8Hxu72etDIM04tTOCaAgVQSYxQqsK7Vrgljgrhp42PbF834eAXp JjgM917uj32PM6sC9QP3ZbjuoWwdRMFTg/pRCfa252j099mIcagFChOb0/s/ESmYGcU6 UzkwPexAUvUv42alS79npFnfNS96vTurBsB6yCl1+urBg+ienB4HtTJfz99plV/3wjT0 4Y1deIj0Ax6J5J5jFXBybVI5eJlcCP4yzMDl0S/OLrWCUQOG9ReIWKN3nUF5qZMO80il yZrl5wrTTSpVMI8pYRD4qPkoC2Ltx8qJKtiRlApda2h8cjvSQvFaKbWBg4O/pVBWznmt X9eg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=n6La81gz; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id iq6-20020a17090afb4600b002533b5dc672si1614662pjb.146.2023.05.24.12.49.46; Wed, 24 May 2023 12:50:02 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=n6La81gz; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235126AbjEXToe (ORCPT + 99 others); Wed, 24 May 2023 15:44:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52180 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235568AbjEXTob (ORCPT ); Wed, 24 May 2023 15:44:31 -0400 Received: from mail-lj1-x22a.google.com (mail-lj1-x22a.google.com [IPv6:2a00:1450:4864:20::22a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 03458186; Wed, 24 May 2023 12:44:30 -0700 (PDT) Received: by mail-lj1-x22a.google.com with SMTP id 38308e7fff4ca-2af318fa2b8so16106801fa.0; Wed, 24 May 2023 12:44:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1684957468; x=1687549468; 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=S6uverP8/Z1wMx7w7sWuXWr6bokp1v2GsI7LJs+SC6E=; b=n6La81gzVPbxK8DJDhLSXGv+LeEXRvzarJw6pOplwcRusbFKnE5J5sTo6kmgF3n+mK IFGSPesaFO34YoOv8yx6iwV72idzsuJhfAjPOXWr//gLF4KTSeZOKnID/KcDHN3ZKl3V ZRfs9eiT7i3wHrSV6+CDt81XoSPJ4awrcR22mYJCUIwmpK37nU04v6K6t6ichVPalrOS wEMRQguRpPgtt2+q8PjqQUBpd1YBEOp3p2tINBxocVVD/ArwY6FFzqaoRCzowpnu3ml8 9/fp4X1KHLdFyabsfp2EUrd0rd6VkCRdfAtznAj2jgYGSp9+n4ybHNubLLh8qGVLKPJ3 nIlw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684957468; x=1687549468; 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=S6uverP8/Z1wMx7w7sWuXWr6bokp1v2GsI7LJs+SC6E=; b=fpGH7RmalQ08vVPU2YMY/X3ISDCAFbbDQPWgYCRg1BDmUwwfmQyobfqCAiuMY53zNO xpL0VG/LhUP9dhF0Qwf4iXyGBrT0ZnZPMtn6Qp9s0vPWMw+SldozVKONspeJK62zYSP8 eb2gut8FI3jeIvZ/2ZXkFcCJuvKIVRF0OWcQK87sA1RTXDsSoaA6A3Lq0y4PpNjaQ2ny VxjYEPYf3NeRwg0XvgS2Z5Qg0D/fxL4wDiOQkP3iZlgap81s14KXY7pIBnQpMTl6PaA4 GknoneZCc7NXqApGfhHT/iLJCW01MJQnkPiJV/L1f83osOAINFmF3ONYoMSPFi20X8Kf ONgg== X-Gm-Message-State: AC+VfDze125imYSQrGiL2gcTojoEtGdalw2BXQxBHpTu17eEqX91zg7b 4ZQbU1deJ/8nbjV27c71atGvDa+HBF/OmBt4+XU= X-Received: by 2002:a05:651c:210:b0:2aa:481b:b439 with SMTP id y16-20020a05651c021000b002aa481bb439mr285495ljn.21.1684957467942; Wed, 24 May 2023 12:44:27 -0700 (PDT) MIME-Version: 1.0 References: <20230516111823.2103536-1-starmiku1207184332@gmail.com> <57dc6a0e-6ba9-e77c-80ac-6bb0a6e2650a@meta.com> <113dc8c1-0840-9ee3-2840-28246731604c@meta.com> In-Reply-To: <113dc8c1-0840-9ee3-2840-28246731604c@meta.com> From: Alexei Starovoitov Date: Wed, 24 May 2023 12:44:16 -0700 Message-ID: Subject: Re: [bug] kernel: bpf: syscall: a possible sleep-in-atomic bug in __bpf_prog_put() To: Yonghong Song Cc: Teng Qi , Alexei Starovoitov , Daniel Borkmann , John Fastabend , Andrii Nakryiko , Martin KaFai Lau , Song Liu , Yonghong Song , KP Singh , Stanislav Fomichev , Hao Luo , Jiri Olsa , "David S. Miller" , Jakub Kicinski , Jesper Dangaard Brouer , bpf , LKML , Network Development Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, May 24, 2023 at 12:34=E2=80=AFPM Yonghong Song wrote= : > > > > On 5/24/23 5:42 AM, Teng Qi wrote: > > Thank you. > > > >> We cannot use rcu_read_lock_held() in the 'if' statement. The return > >> value rcu_read_lock_held() could be 1 for some configurations regardle= ss > >> whether rcu_read_lock() is really held or not. In most cases, > >> rcu_read_lock_held() is used in issuing potential warnings. > >> Maybe there are other ways to record whether rcu_read_lock() is held o= r not? > > > > Sorry. I was not aware of the dependency of configurations of > > rcu_read_lock_held(). > > > >> If we cannot resolve rcu_read_lock() presence issue, maybe the conditi= on > >> can be !in_interrupt(), so any process-context will go to a workqueue. > > > > I agree that using !in_interrupt() as a condition is an acceptable solu= tion. > > This should work although it could be conservative. > > > > >> Alternatively, we could have another solution. We could add another > >> function e.g., bpf_prog_put_rcu(), which indicates that bpf_prog_put() > >> will be done in rcu context. > > > > Implementing a new function like bpf_prog_put_rcu() is a solution that = involves > > more significant changes. > > Maybe we can change signature of bpf_prog_put instead? Like > void bpf_prog_put(struct bpf_prog *prog, bool in_rcu) > and inside bpf_prog_put we can add > WARN_ON_ONCE(in_rcu && !bpf_rcu_lock_held()); bpf_rcu_lock_held() is used for different cases. Here s/in_irq/in_interrupt/ inside bpf_prog_put() is enough to address this theoretical issue.