Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp3547400pxj; Tue, 15 Jun 2021 03:26:38 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxj3MOtb52ZjDC64utSfoYNrI/KrWgT8TDiWW/mNXUC1m6troA5bENHTt+8foT7aMI28y0s X-Received: by 2002:a05:6402:655:: with SMTP id u21mr22340090edx.211.1623752798475; Tue, 15 Jun 2021 03:26:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623752798; cv=none; d=google.com; s=arc-20160816; b=PcaDFZllAQnphkNg3JtutJyGUBfbqSskmTPzHD6+dX4Ahfb6AZEgsGMW1GDKRJ3U8d /sBjEYtf0OstA5psIGBpCK2H9LKiQ32RDSs+rkMUw1N2KaWsg7hlARO3me47qR+QteeI itaofpWvD+cATmJGwsYeE41mEnAPTMIRKlM4PmmIRTmOU6/sbYj6Vrw9KsFcN/Akppk9 u2QFU9vIcuEVqOPIIwZZ4mkoGn5ZjzMUAxUorfn2CXzmRS0QFf2IxsUDdGTVd0Ne7+b2 Tsc6mDbeqjbBRmERqHtG3yXfh/41JThOlhDuDkS2sz/jcg2fdS0ZfFGHvhjGsXx07G++ rAqQ== 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=TjaB6i8KcUeUiC7lYhVxV/Olnmn95eEJM+cZhPD4C0Y=; b=DyOy1SxhTSP9D8xPxNa+Y/5UO4i5jyoz5T29CEcMthWZnEAIQ5rlHzZS6xd/8NYi+d GZAOlPNvWzJUtvixW7JHtgeBkuj0UByUjx/EKF+wF0Fmy2ZjhqvjePAWB1lXaSvVO9Vv kSCmbFzysGfxBPCgcdntLZSWVgoBMNHhA1gaVMLfMdX60glgKWwJPEf8AyX6P/gGb2wJ PwPuf3pTOxQ8XqEpnMb6a6AB95Q/2k5XuUIiDRoQhHKl1NMBg+oP26t+sqKjTFhBw3OK PCPG5ikUpeElTy75vove79RVeB5Q7dQWL19jn8GCYIf5HAF640NLSdxS+aj61KuHUVlC pblw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=cbnPlPiC; 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 u13si9000284edt.148.2021.06.15.03.26.15; Tue, 15 Jun 2021 03:26:38 -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=cbnPlPiC; 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 S231521AbhFOK0u (ORCPT + 99 others); Tue, 15 Jun 2021 06:26:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38318 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231220AbhFOK0t (ORCPT ); Tue, 15 Jun 2021 06:26:49 -0400 Received: from mail-ed1-x52d.google.com (mail-ed1-x52d.google.com [IPv6:2a00:1450:4864:20::52d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D5615C061574; Tue, 15 Jun 2021 03:24:44 -0700 (PDT) Received: by mail-ed1-x52d.google.com with SMTP id r7so35944615edv.12; Tue, 15 Jun 2021 03:24: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=TjaB6i8KcUeUiC7lYhVxV/Olnmn95eEJM+cZhPD4C0Y=; b=cbnPlPiC0Rx83GFLUflqeNHgYzJEAm3xXMUb9Wz7NhfX7rwqEx4EEDIvtGaC3m3Hv0 UNqsJP+LBT+8gm2Uq3aUB/Pfstb0PpO0i0NR7uI9cUIYMFsj30DPnFsm3sIhcQ4Guc4e H/T5WOaS/3tyL3daOxiCTLvL2A8Ujd6wp7p9YSXoIo5PIqKL/QpSiOUG8t7D+THq0eKp j14HXAzqEchVot/+2x0Eyj9WFhZIzyweTJkm8KCdSYX0L+Uc9CibfmdOQNYDWn50fHzg tD4QSWEFpOE3iKzwWIVVuTrgEpNtg6bDnmTt/09AI96/244D6dzx8kEsHn7ZU+m4NKhC Fy4w== 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=TjaB6i8KcUeUiC7lYhVxV/Olnmn95eEJM+cZhPD4C0Y=; b=ie3Oo16/J+x/YlKUTpT2cx1d94us+xY7RbMT3+Alj6jWdIJR9qZ5nsgsFFa4vnU3uX jYApaLvwA9D5ScM+7fRClwtkCRATaJu7mgSeUhoiOguK2UMpeBsIFWkfUi6qbXSuPZTW JKmWBDjdAidelYOKEeovQczW7CMR2ym9vPOniu3EiEG3s5lgSe5Yp9HtVebYUyCgjdeW pSnHPR+NHYU11AOWGfLQWM6HXvQUZXDCaDVLbAShVbwUuByt4Gd6BwdOXDSUYazQjMSO nEqW482CkpYE/gqlzS+myA2GCfRfCUmTGqgqcw2y8W6Jqr35VhL150IqELTH6CagYBq4 /qAw== X-Gm-Message-State: AOAM533CuUFW3x9XI/3DGqX43KIhnBTJd5CeE1yuVvAee+q8rZhhXgGH pU1YG1DFJsxJYdMxnxeHCs+dFy/oyOfbP8eQhnQ= X-Received: by 2002:aa7:ce86:: with SMTP id y6mr22324805edv.309.1623752683473; Tue, 15 Jun 2021 03:24:43 -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:24:17 +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 6:10 PM Dongliang Mu wrote: > > 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. Hi gregkh, If the schedule_work is not invoked, can I call ``cancel_work_sync(&pdata->set_multicast)''? If not, is there any method to verify if the schedule_work is already called? Best regards, Dongliang Mu