Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp3846724ybl; Mon, 12 Aug 2019 07:22:11 -0700 (PDT) X-Google-Smtp-Source: APXvYqxIXKya+KNofhqaFPfMEGcVARBV+w7adakQEOCgDVuERNM1jeaSRJlWW94YssaUqLkubxDX X-Received: by 2002:a17:90a:d795:: with SMTP id z21mr8114369pju.43.1565619730832; Mon, 12 Aug 2019 07:22:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1565619730; cv=none; d=google.com; s=arc-20160816; b=q5xGe73ZsA4nPhVYX4p43FYYoLP0AbSu7dOtaFG1GoAOvsuY03VpU2r4w5zEuWQxXz Jbv2fbB5k0g4HxhE/R/3STp53yQ4cO9daSds/B8xCcG40vadhZ6JMdmMhKMQkM9QFHIL M+JKDOiTtvXANDEQ+55QDfNYO9pJBlR1YJ94xZTUaQdzOWQXvgWCyc2HN08CZZokONj+ wnQHeaq/rkcEO5vZ8jah13T5uWT8PnBk784/E8xhv96ZHuJbw1QPr1j+hNZCNnWBLY/z /TRjBzTVHU24YZ/2wKpI8Gpfj3g0MLShYe3NVi0Kzgtau95w/sC6h1VN69UoyaPh85yn 4nUQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:message-id:in-reply-to :subject:cc:to:from:date; bh=9MS33xJBEXQkYZhqOoAVxkjpK36TF5bgSmKmaxZvXe8=; b=kF9c1aO6ZtDl/BWHHROb1OWp608vhe+8IWcoYW1k8RP7e9A4bxnM7bOfKd9y6fWEsg zjcojA3kSrAKDIwjiVcSm5GTl3Ot3Z7fNOc0F61Ptb5rTFuo8Guq9rmuuMvbeEVJf9dS 2Y+Oc9LC6s6ZQAO2MXj6tEUvT8b7K/N2qYHzpwANh3BNaxincg8bu2jP4zavwTAq0BpU aO0BWqmCXEaY89cSXF5AeMpfN+I21/e9mreM2skP+jJmBdRW0Js/7EZ0RLH+X4AR50pa H1C6ltc5ty/4bfHlrrsHCg35jjaPFPQBtyBYsU7HwHdYV9Q4SeiANU+Tx+lPEEZktYDM dalg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id y193si63217791pgd.108.2019.08.12.07.21.54; Mon, 12 Aug 2019 07:22:10 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727342AbfHLOVQ (ORCPT + 99 others); Mon, 12 Aug 2019 10:21:16 -0400 Received: from iolanthe.rowland.org ([192.131.102.54]:46964 "HELO iolanthe.rowland.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S1726354AbfHLOVP (ORCPT ); Mon, 12 Aug 2019 10:21:15 -0400 Received: (qmail 2945 invoked by uid 2102); 12 Aug 2019 10:21:14 -0400 Received: from localhost (sendmail-bs@127.0.0.1) by localhost with SMTP; 12 Aug 2019 10:21:14 -0400 Date: Mon, 12 Aug 2019 10:21:14 -0400 (EDT) From: Alan Stern X-X-Sender: stern@iolanthe.rowland.org To: Andrey Konovalov cc: Greg KH , syzbot , Bjorn Helgaas , , Kernel development list , USB list , Guenter Roeck , , , syzkaller-bugs Subject: Re: KASAN: use-after-free Read in ld_usb_release In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, 12 Aug 2019, Andrey Konovalov wrote: > Alan, could you submit this patch (if you haven't already)? Looks like > it fixes this bug (and might fix some others). I will. I was waiting to see if Greg KH had any comments. Alan Stern > > drivers/usb/core/file.c | 10 +++++----- > > 1 file changed, 5 insertions(+), 5 deletions(-) > > > > Index: usb-devel/drivers/usb/core/file.c > > =================================================================== > > --- usb-devel.orig/drivers/usb/core/file.c > > +++ usb-devel/drivers/usb/core/file.c > > @@ -193,9 +193,10 @@ int usb_register_dev(struct usb_interfac > > intf->minor = minor; > > break; > > } > > - up_write(&minor_rwsem); > > - if (intf->minor < 0) > > + if (intf->minor < 0) { > > + up_write(&minor_rwsem); > > return -EXFULL; > > + } > > > > /* create a usb class device for this usb interface */ > > snprintf(name, sizeof(name), class_driver->name, minor - minor_base); > > @@ -203,12 +204,11 @@ int usb_register_dev(struct usb_interfac > > MKDEV(USB_MAJOR, minor), class_driver, > > "%s", kbasename(name)); > > if (IS_ERR(intf->usb_dev)) { > > - down_write(&minor_rwsem); > > usb_minors[minor] = NULL; > > intf->minor = -1; > > - up_write(&minor_rwsem); > > retval = PTR_ERR(intf->usb_dev); > > } > > + up_write(&minor_rwsem); > > return retval; > > } > > EXPORT_SYMBOL_GPL(usb_register_dev); > > @@ -234,12 +234,12 @@ void usb_deregister_dev(struct usb_inter > > return; > > > > dev_dbg(&intf->dev, "removing %d minor\n", intf->minor); > > + device_destroy(usb_class->class, MKDEV(USB_MAJOR, intf->minor)); > > > > down_write(&minor_rwsem); > > usb_minors[intf->minor] = NULL; > > up_write(&minor_rwsem); > > > > - device_destroy(usb_class->class, MKDEV(USB_MAJOR, intf->minor)); > > intf->usb_dev = NULL; > > intf->minor = -1; > > destroy_usb_class();