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 X-Spam-Level: X-Spam-Status: No, score=-10.1 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 10540C433E0 for ; Tue, 28 Jul 2020 05:07:35 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id DE3EC2070A for ; Tue, 28 Jul 2020 05:07:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1595912854; bh=julnmZ6d99C3BH6F52UlRn44Ck82VwZ9mFMWkFSJq0E=; h=References:In-Reply-To:From:Date:Subject:To:Cc:List-ID:From; b=1oYnHsu2FyfXB8++dDIwl6tiDCU4xrkHvyZZJtnFBPURUJGhOMvE/MmC2MX6ui6Os vxjR2Donz2a1TY0XobL/jLd/RSrQ5KTzyBB3WYUW5yeAuW9zBdBysuyIGnizvsXQop 2wBumbLEfK4ubOgV34RG7SksK+lL1I6oEVRvHqVk= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726308AbgG1FHe (ORCPT ); Tue, 28 Jul 2020 01:07:34 -0400 Received: from mail.kernel.org ([198.145.29.99]:59362 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726290AbgG1FHe (ORCPT ); Tue, 28 Jul 2020 01:07:34 -0400 Received: from mail-lj1-f176.google.com (mail-lj1-f176.google.com [209.85.208.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 354B222B47; Tue, 28 Jul 2020 05:07:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1595912853; bh=julnmZ6d99C3BH6F52UlRn44Ck82VwZ9mFMWkFSJq0E=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=GiEob/uUATJb6NGdNXNRPIXJMwx5B1hmd89pvpgQ1A7bneO6GstY8d5UUx/Xzh3cX rTw+eqI8jlyDCvT8aDqgDW2shNnG1Ip+L41mIssxsr9WnhIF264dq+dfevQdECGoYd IBJsfXYE+eCnZir5jQMZr1HGV8XIwIL9uKm2aL48= Received: by mail-lj1-f176.google.com with SMTP id v4so10027279ljd.0; Mon, 27 Jul 2020 22:07:33 -0700 (PDT) X-Gm-Message-State: AOAM531IRPBcM5FuHh/WX+4DNE11SPB8Flpz+CfVAPSp3nHL0lUqSxul NOBpxK9RlF+XFYygNJR+LhqDqG64eWzHoOpNU3s= X-Google-Smtp-Source: ABdhPJytszNTur7+L8yYaMkkhh+bgs5XLkap0KlVaVnWI6a+xCWLQT4+KIxYTOVT5ftgIxWwP5luaCd2mGdDBu/bXb8= X-Received: by 2002:a2e:9996:: with SMTP id w22mr12656350lji.446.1595912851449; Mon, 27 Jul 2020 22:07:31 -0700 (PDT) MIME-Version: 1.0 References: <20200728022859.381819-1-yepeilin.cs@gmail.com> In-Reply-To: <20200728022859.381819-1-yepeilin.cs@gmail.com> From: Song Liu Date: Mon, 27 Jul 2020 22:07:20 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [Linux-kernel-mentees] [PATCH net] xdp: Prevent kernel-infoleak in xsk_getsockopt() To: Peilin Ye Cc: =?UTF-8?B?QmrDtnJuIFTDtnBlbA==?= , Magnus Karlsson , Jonathan Lemon , Dan Carpenter , Arnd Bergmann , Greg Kroah-Hartman , "David S. Miller" , Jakub Kicinski , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend , Martin KaFai Lau , Song Liu , Yonghong Song , Andrii Nakryiko , KP Singh , linux-kernel-mentees@lists.linuxfoundation.org, Networking , bpf , open list Content-Type: text/plain; charset="UTF-8" Sender: bpf-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: bpf@vger.kernel.org On Mon, Jul 27, 2020 at 7:30 PM Peilin Ye wrote: > > xsk_getsockopt() is copying uninitialized stack memory to userspace when > `extra_stats` is `false`. Fix it by initializing `stats` with memset(). > > Cc: stable@vger.kernel.org 8aa5a33578e9 is not in stable branches yet, so we don't need to Cc stable. > Fixes: 8aa5a33578e9 ("xsk: Add new statistics") > Suggested-by: Dan Carpenter > Signed-off-by: Peilin Ye > --- > net/xdp/xsk.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/net/xdp/xsk.c b/net/xdp/xsk.c > index 26e3bba8c204..acf001908a0d 100644 > --- a/net/xdp/xsk.c > +++ b/net/xdp/xsk.c > @@ -844,6 +844,8 @@ static int xsk_getsockopt(struct socket *sock, int level, int optname, > bool extra_stats = true; > size_t stats_size; > > + memset(&stats, 0, sizeof(stats)); > + xsk.c doesn't include linux/string.h directly, so using memset may break build for some config combinations. We can probably just use struct xdp_statistics stats = {}; Thanks, Song > if (len < sizeof(struct xdp_statistics_v1)) { > return -EINVAL; > } else if (len < sizeof(stats)) { > -- > 2.25.1 >