Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp3538061pxj; Tue, 15 Jun 2021 03:12:22 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy38FRYUt+bFq1sdmT9BAZm/3ofzcDq5PEFIKj0/GatArVz3wZ7fOa7frRH5G4PZNUKHstv X-Received: by 2002:a17:906:6dc3:: with SMTP id j3mr20188948ejt.448.1623751942263; Tue, 15 Jun 2021 03:12:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623751942; cv=none; d=google.com; s=arc-20160816; b=P9ycenINbGSBLGOH8Fid957b8Qyj33RFXky/pwsuZmb6zWQ7N/g4zrnSpE8mu9sGpo wF5YzQ54AHcby4+xd7kMs+V3tfIxtWYmb2BEmH4I+I54HUTR4VGzieegTXEt6/cRcf4P n9WQiOlQyN4drb+ksmDA1mp9zBkgxaleDaPAStNjCxO/1PGzMsVUnSSfn5zqB9pOsxkq Hq3Lscb1zu4DEk3S2Lekyii3Csj0yXNeA4ydZlgj/XW10GdLPSKAoYhWx41E7AJJ0NYM /hbyEXdm8rTnlWoWIgrqsE2K9sgSySyrbCrV7DMyUNpxvcq4X52T0MlDNsWj0NRM3Lou qtpQ== 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=oCpcZf2UhB1kUI420Fd2Oz53E4JiY49ICmqCxOkWky8=; b=WF1s5F1hBkG+q8oF/PvpmCb/7WFeh8XDsiC4QyZpjw0MsvQiOt0FZXMyM/JqS/3gXv z7zCAzEHf+ksF/zeI+RYBMSFaZQM4sO8BLSLfZxE5MqNJR1wuEEtDAFIVQMP0L1wroGM PtInKzqJT25VfZXguQc+YHU1zschEAki9/mvVLWD4ZLPN9xcl+6FPJZnXlPXtATVlGz5 BKk/VTdliSzlkTrz8EqRkeBsKsjjhJzBrKThVLCR4cTAICyx4wKxB+3YRjQEjsI9XzJ1 uEDJYNfzzVD25G5E6dh2XTZMQm0mPEFPyNGrJUGeHZ41Cu103YhGUS70YMlZmYGVD7RG pSOA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=dJUfgN+8; 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 pg13si13567766ejb.35.2021.06.15.03.11.59; Tue, 15 Jun 2021 03:12:22 -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=dJUfgN+8; 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 S231572AbhFOKMt (ORCPT + 99 others); Tue, 15 Jun 2021 06:12:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35218 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231494AbhFOKMs (ORCPT ); Tue, 15 Jun 2021 06:12:48 -0400 Received: from mail-ed1-x52b.google.com (mail-ed1-x52b.google.com [IPv6:2a00:1450:4864:20::52b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3D404C061574; Tue, 15 Jun 2021 03:10:44 -0700 (PDT) Received: by mail-ed1-x52b.google.com with SMTP id u24so50304783edy.11; Tue, 15 Jun 2021 03:10:44 -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=oCpcZf2UhB1kUI420Fd2Oz53E4JiY49ICmqCxOkWky8=; b=dJUfgN+8aIX6uooBjZrDuUG21Okd7E9dQDRGfypdUfviFuP/OMdcJ1vDmE84Hoqt+M mwjEs/3Om84dIJp8ClqjoLQUJo40S7iocXGQlxmtx334ZrcWlroUfGO58XmwF8bLTaI/ DJsNd6KH8P46m2r+HINUg8CvgMKRFZaDWS/+IjSLCxNNyHOpHFSV+eE0YZdf5JUGO9vK 3DlK436iC5HZcJNmhVcFQgkEkM8m+jxjM8DKGSx47tlFc4QV1mVWHltSBJRzIAmI9W4T MtZh+jIOj9xZklgmArRbu0s1dMbV/MygT0QRliJ4BEWtcLYfn1HqJIX/xiGebDfMftsf Ud3g== 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=oCpcZf2UhB1kUI420Fd2Oz53E4JiY49ICmqCxOkWky8=; b=IE7m+uuf+V3OD6y3Onokd8uded8+jwlLeqQ52ETwQTb7l8IRgHxp71mUQOu/xUa0je 2G8etHry1i8A+L+sXhS1NIi7fPTB1ybhH2JCRXSctT02zMDIxd8RBDKrLzSWoS8LQ9dI EwaGhY7uqRQaRYLVmvKdY1iZh5UtZ+lw9VuSpr6OKHRYcwunaCHFzdeRGDToieFQjTB4 A0SM3HwmC0UA48zezGa/gqRfkvKjiuqs641xs16w9eP6bsCq/MoWR+cr9rfBUpcn/++m y28umqJeUoggGJR0rrTGjji4rqse0URNutLLND9BWpjfeKZjJq50oqUEO2giAhsH9KXr MjNg== X-Gm-Message-State: AOAM532L1vVkJInlBXTCYQbDpR2yJbnv5FLFuXlXf9+TrUR/+EHILGYx 1AJPYJ7oMJxMwF008nHtsIlSmZdP+tXPCxuxM9w= X-Received: by 2002:a05:6402:54f:: with SMTP id i15mr21915437edx.339.1623751842851; Tue, 15 Jun 2021 03:10:42 -0700 (PDT) MIME-Version: 1.0 References: <20210614153712.2172662-1-mudongliangabcd@gmail.com> In-Reply-To: From: Dongliang Mu Date: Tue, 15 Jun 2021 18:10:16 +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 5:44 PM Greg KH wrote: > > On Tue, Jun 15, 2021 at 03:56:32PM +0800, Dongliang Mu wrote: > > 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. > > It's wrong there too :) /: I will fix such two sites in the v2 patch.