Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp3453105pxj; Tue, 15 Jun 2021 00:58:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwaExLPcNyPVPpnESFBqlsWNxdFLtuESGKRP14nsjrgkwHJ68Er77bFn5iAolFvltAb/xQE X-Received: by 2002:a05:6638:2491:: with SMTP id x17mr2833343jat.33.1623743886712; Tue, 15 Jun 2021 00:58:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623743886; cv=none; d=google.com; s=arc-20160816; b=VvWuUdPPqtZ/TvsNz+TqryUCZKEPCGv7cWxgVXAu0fAbWf4X6dN66yN48+BDSz3aQ4 qA0Vh4HcHAzImQ+mhktL4sVoLp+kaQazMQH7BXk/N021TCgK+N6XC1itItFVcBs75zqa JPETDaTulvEQ0ftWub6h+1ZWAVC5ukuMIO0ggxBX9dXo6uIAAC/XN1rCS97k2bCZofU7 KBqZ6G/9BGd46dKGArTb1cBxs4UlsohZuEBHohBaHAmKSpFtqmipG0pZnIJMid1vrvKR KH7PWLk0f0W3nWpEl/+087YZW6d0DNftCSkQfwiHkSPU+aNovDv0cErX9EI/QD90IRoZ psUQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=32/dZhle6KrGyODOZOxwRltOK7h8bh5e3SeLC3CcT00=; b=gYuKmzyUPlnLAT47pT5XWQTKWkZfslBh9Cv7mFdFRjMuLi+9vg/6AEPXNKn96cBF4a 5syjZX7IEhez72D6Iopbfrfaoez10urUtBWevIdq5dJe1Fno6mlkwr9fBz8aXVp5SL2Q MbvoICVcGP0SBKNz+8puV4Zn7URd9C0nxfaFE7yaDoqmJOwkZUu/U02G1R37qZ5hrG0d K/ZAO8NYs3y76gh16wk/AXhfqFBEeR9Wt8hxVJUFi40g0Bc0vFlv/VwBnWtd1BIA/VfX J+ej6Rah3Np7Y2//RussTkcyrr2RBxb4BdRok1/UuCHj/iYE5SKMdmN3NvL4aP8a3xms LnOg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=BqdHyOHP; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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 vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id w34si18981225jal.116.2021.06.15.00.57.53; Tue, 15 Jun 2021 00:58:06 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=BqdHyOHP; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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 S230450AbhFOH7G (ORCPT + 99 others); Tue, 15 Jun 2021 03:59:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33222 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230420AbhFOH7F (ORCPT ); Tue, 15 Jun 2021 03:59:05 -0400 Received: from mail-ej1-x62e.google.com (mail-ej1-x62e.google.com [IPv6:2a00:1450:4864:20::62e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 795ACC061574; Tue, 15 Jun 2021 00:57:00 -0700 (PDT) Received: by mail-ej1-x62e.google.com with SMTP id my49so21017404ejc.7; Tue, 15 Jun 2021 00:57:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=32/dZhle6KrGyODOZOxwRltOK7h8bh5e3SeLC3CcT00=; b=BqdHyOHPlg70IJeotkQwWQlQaMgr6jjajr9X0+6HsRbNwI6GpXb+GRr1iQctE/mpjQ PeQ6+2U918XoZDfD2leE4cRngrAjL1x9BiPU0gk7sKPX5fV7Z9lrAt9wPFwFcwmytrKn u3xTBTVsjN3Emaf0Ce82uLIgqq0AzJOdZm/xDUrwfzcuV2jrIdjv1vvY3P7bL1XzRvsh oAt081sfJIg+kSP2qqQJ/Wp8ddwwIR6CZiViymeaLBiyZEpP0fd/XiCPrAm6h3Sbj4NR XQPMEdf3cERpMi+IjSnK01FtQ9fGu1NP0Dyt1G9IaOmuqE4s/9j5dBaeSF/d5J45ZZ03 0yDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=32/dZhle6KrGyODOZOxwRltOK7h8bh5e3SeLC3CcT00=; b=eTEqPYVPy1Sv0kTRgn3lqbQkkFrG60FNjU83yKTLNrbp8ivOLp3vCfrjDkP6ulh68N f06I3tdrQn4BGvYLYLmzyMB+CRbfzy0GQ2y/uR3W2UDddxOLAY1AWeXJ4OHhYNw+pAcA MWspCfLbomqW1oKL8Jj7lhLmx7dn0xCPgliDhrgh20eAO2PaNVv+FOxh6g5Oqdqpi6Q6 eQb3sXTF/KONq9qmZu/rcEhCazmknEVTd2Uwf3WBFmqT2n6ok9E7XzJlpTqNYEuIZf53 rN84Jcn6gCV1NJeMLG07YWuv6idczGpY9SDWHIL+4PrxafOwEt/SkwFnAOQliV3Ho1hU 801g== X-Gm-Message-State: AOAM533FBWQCOxkQYFyRHXxF8Bk+2o5lfgfdKKYFNRCu1kpVt+NeNIvs 7l4jbVoBMamSAnBXG3m+OFZGQ4xysxsJsbXHaVo= X-Received: by 2002:a17:906:35ca:: with SMTP id p10mr19009027ejb.535.1623743818992; Tue, 15 Jun 2021 00:56:58 -0700 (PDT) MIME-Version: 1.0 References: <20210614153712.2172662-1-mudongliangabcd@gmail.com> In-Reply-To: From: Dongliang Mu Date: Tue, 15 Jun 2021 15:56:32 +0800 Message-ID: Subject: Re: [PATCH] net: usb: fix possible use-after-free in smsc75xx_bind To: Greg KH Cc: Steve Glendinning , "David S. Miller" , Jakub Kicinski , Pavel Skripkin , netdev@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Jun 15, 2021 at 3:38 PM Greg KH wrote: > > On Mon, Jun 14, 2021 at 11:37:12PM +0800, Dongliang Mu wrote: > > The commit 46a8b29c6306 ("net: usb: fix memory leak in smsc75xx_bind") > > fails to clean up the work scheduled in smsc75xx_reset-> > > smsc75xx_set_multicast, which leads to use-after-free if the work is > > scheduled to start after the deallocation. In addition, this patch also > > removes one dangling pointer - dev->data[0]. > > > > This patch calls cancel_work_sync to cancel the schedule work and set > > the dangling pointer to NULL. > > > > Fixes: 46a8b29c6306 ("net: usb: fix memory leak in smsc75xx_bind") > > Signed-off-by: Dongliang Mu > > --- > > drivers/net/usb/smsc75xx.c | 3 +++ > > 1 file changed, 3 insertions(+) > > > > diff --git a/drivers/net/usb/smsc75xx.c b/drivers/net/usb/smsc75xx.c > > index b286993da67c..f81740fcc8d5 100644 > > --- a/drivers/net/usb/smsc75xx.c > > +++ b/drivers/net/usb/smsc75xx.c > > @@ -1504,7 +1504,10 @@ static int smsc75xx_bind(struct usbnet *dev, struct usb_interface *intf) > > return 0; > > > > err: > > + cancel_work_sync(&pdata->set_multicast); > > kfree(pdata); > > + pdata = NULL; > > Why do you have to set pdata to NULL afterward? > It does not have to. pdata will be useless when the function exits. I just referred to the implementation of smsc75xx_unbind. > thanks, > > greg k-h