From patchwork Thu Oct 13 17:52:03 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Greg KH X-Patchwork-Id: 2243 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4ac7:0:0:0:0:0 with SMTP id y7csp413006wrs; Thu, 13 Oct 2022 11:12:09 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5wBNH7QNKiOGeqmUI1KGEkm5Nlz1yC7J+qqgPM/VxcxCFdI8U5YINzbkdv3uGvvYVrAyhY X-Received: by 2002:a63:3104:0:b0:459:a367:95ad with SMTP id x4-20020a633104000000b00459a36795admr1048358pgx.112.1665684728725; Thu, 13 Oct 2022 11:12:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1665684728; cv=none; d=google.com; s=arc-20160816; b=xTyzqBS+svSVPAp2iEQ1CRP4m/DXw8Tq/8GesMXYchrgbpIkaXer8Q7KaCFqRymWM9 IKCW4g7Bgo9206jHxoi421FNnv5MBOMQdZqM6/8VgH6emtJO09LPhlONbJUIG/svnwAx X02iqajk36EuLJ3yRuWlCKFeQNMOBxmAQGCef9SP9Qm1tHHT3x8bUXLthajy6EmzkZsb HOpiF34IypHDTJ8XOI7yhe2Zj9f7Yjwl9a+b1T948lbr/88Vdj23wbnx1vMVVYoq4Lzf sIwsdvyM+7e3tNUpoW0pmrb36IGOkF3uIZkZL5MaKZt5nsrPxAyAKIgFX0tURgSHso+n Pi7A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=shzi5+L5CEGHDmBDN2Zdk+HGrpg5MLMDdywDXRMBUUU=; b=ih9oClvganRom1di7WIK1IkMWz+PgRFcEJ5KYzEH6iiOLOIKAal29ku3cvUbJRfggc taiEMyVkJFZ8k7Abbx0jRNvX3oCzQNi+3Cx4mp3Qo6G+QvdC7EA542CaHJAHEDzesFwI B5xuKpRRlhYFM37jZB4bUhkiXG4E3vcTepyet1BDilH/tG0qaEN4n+rlPB+FYx+lftoy uLVg7Z5H4LfZDdxGzWfoqRqZpUoulT4zO13aMR7xMVfEjmyxlF6vt1TgRWvthoRV3rdF MmqMPRp4YCVTmbNMDKReLHpT9+XWZsprPMoX209+fkD8hau2UJMZF8Nfrt6zJfChSnUd KYHA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=TJ5HyhjS; 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=NONE dis=NONE) header.from=linuxfoundation.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id z21-20020aa78895000000b0056353f0bd40si119141pfe.29.2022.10.13.11.11.56; Thu, 13 Oct 2022 11:12:08 -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=@linuxfoundation.org header.s=korg header.b=TJ5HyhjS; 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=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231703AbiJMSLn (ORCPT + 99 others); Thu, 13 Oct 2022 14:11:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47756 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231419AbiJMSKh (ORCPT ); Thu, 13 Oct 2022 14:10:37 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A98E8169CE8; Thu, 13 Oct 2022 11:07:55 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id BE07061908; Thu, 13 Oct 2022 17:55:01 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D01D7C433D6; Thu, 13 Oct 2022 17:55:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1665683701; bh=xhDkyT6Vj3P2Ol+YKtKjFhVGuUFT4l9D3pdaJehwOms=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=TJ5HyhjSNyCHeBT5TXW/5hqF4fe9eIKg0GRmgGo7zmzCD8a+cKLLGZjXrjkYrIX8E P/31XDGlpHWR4pOIOkPzhjhOrk7IqH/hUIQingEvJsXYS02x/DNVw4YlUewHsliwNB PD8zQwVit78w14SbBhTiCe+mCSGok2G4R4zsefDY= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Jalal Mostafa , Daniel Borkmann , Magnus Karlsson Subject: [PATCH 5.10 09/54] xsk: Inherit need_wakeup flag for shared sockets Date: Thu, 13 Oct 2022 19:52:03 +0200 Message-Id: <20221013175147.586509472@linuxfoundation.org> X-Mailer: git-send-email 2.38.0 In-Reply-To: <20221013175147.337501757@linuxfoundation.org> References: <20221013175147.337501757@linuxfoundation.org> User-Agent: quilt/0.67 MIME-Version: 1.0 X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1746597029733906111?= X-GMAIL-MSGID: =?utf-8?q?1746597029733906111?= From: Jalal Mostafa commit 60240bc26114543fcbfcd8a28466e67e77b20388 upstream. The flag for need_wakeup is not set for xsks with `XDP_SHARED_UMEM` flag and of different queue ids and/or devices. They should inherit the flag from the first socket buffer pool since no flags can be specified once `XDP_SHARED_UMEM` is specified. Fixes: b5aea28dca134 ("xsk: Add shared umem support between queue ids") Signed-off-by: Jalal Mostafa Signed-off-by: Daniel Borkmann Acked-by: Magnus Karlsson Link: https://lore.kernel.org/bpf/20220921135701.10199-1-jalal.a.mostapha@gmail.com Signed-off-by: Greg Kroah-Hartman --- include/net/xsk_buff_pool.h | 2 +- net/xdp/xsk.c | 4 ++-- net/xdp/xsk_buff_pool.c | 5 +++-- 3 files changed, 6 insertions(+), 5 deletions(-) --- a/include/net/xsk_buff_pool.h +++ b/include/net/xsk_buff_pool.h @@ -86,7 +86,7 @@ struct xsk_buff_pool *xp_create_and_assi struct xdp_umem *umem); int xp_assign_dev(struct xsk_buff_pool *pool, struct net_device *dev, u16 queue_id, u16 flags); -int xp_assign_dev_shared(struct xsk_buff_pool *pool, struct xdp_umem *umem, +int xp_assign_dev_shared(struct xsk_buff_pool *pool, struct xdp_sock *umem_xs, struct net_device *dev, u16 queue_id); void xp_destroy(struct xsk_buff_pool *pool); void xp_release(struct xdp_buff_xsk *xskb); --- a/net/xdp/xsk.c +++ b/net/xdp/xsk.c @@ -742,8 +742,8 @@ static int xsk_bind(struct socket *sock, goto out_unlock; } - err = xp_assign_dev_shared(xs->pool, umem_xs->umem, - dev, qid); + err = xp_assign_dev_shared(xs->pool, umem_xs, dev, + qid); if (err) { xp_destroy(xs->pool); xs->pool = NULL; --- a/net/xdp/xsk_buff_pool.c +++ b/net/xdp/xsk_buff_pool.c @@ -198,17 +198,18 @@ int xp_assign_dev(struct xsk_buff_pool * return __xp_assign_dev(pool, dev, queue_id, flags); } -int xp_assign_dev_shared(struct xsk_buff_pool *pool, struct xdp_umem *umem, +int xp_assign_dev_shared(struct xsk_buff_pool *pool, struct xdp_sock *umem_xs, struct net_device *dev, u16 queue_id) { u16 flags; + struct xdp_umem *umem = umem_xs->umem; /* One fill and completion ring required for each queue id. */ if (!pool->fq || !pool->cq) return -EINVAL; flags = umem->zc ? XDP_ZEROCOPY : XDP_COPY; - if (pool->uses_need_wakeup) + if (umem_xs->pool->uses_need_wakeup) flags |= XDP_USE_NEED_WAKEUP; return __xp_assign_dev(pool, dev, queue_id, flags);