Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp1184939ybz; Wed, 29 Apr 2020 16:43:50 -0700 (PDT) X-Google-Smtp-Source: APiQypJlbtVM9ng+uL7BICpQEc7+DqQLU1efgJFheLEF5ZxLXSEzFpTkHefatKhOpQ/QFRASaIY8 X-Received: by 2002:a17:906:1e47:: with SMTP id i7mr234274ejj.61.1588203830832; Wed, 29 Apr 2020 16:43:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588203830; cv=none; d=google.com; s=arc-20160816; b=KPEmGGAZAy0aAtSl1QsPIhjLInTbyIiJlJ03+7KRdAGEvCm5rhXLGkyphi+o2jLDHu eJcHLn1BTBUpgw/CgVxlrREq7EUoxgkr5S+dRpfhMDUPl5PjkJeNG+0QP38O0+4cl93W WCqeED+ZgrAMIwjrOodE0UIWoY4Z/0akglgN0KpCBhnCV3s/LeAeQhgcgmwvH1vPoUs3 5adDX9BHOIdMJG69zsgLA3ARXt1n80gLSE3dPtkn/6DJ6pbbusaXMUnPLWRjA0RaDkUM Ewgzln9eW7awcHOcB0z0d7sCkbpsn+IyLk1BYrImbfkT0Q5JwxDFB46jjaRmEnBtQKYy hAJA== 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=6OWV1LeX1FhMWLrgEo7ZeUes7IDh8bn5I7oFm4rS23U=; b=qNbtaXWpkbScBD4uJSXTLN0FCBn8mgMYzFEstNAlcUFeo+/9hFbI369eRiKZIbNOPf CijozurUQcMiFf6flp2K/ekfjcT06QRyupbZAlTRQCEmzW4ATArOIbcZUOXKYtMq4A9b 3wOZSWEQ8SVHlxYG7i5KZjwF5EjIDjA/2/GqeRY22k48+69ea0SRYJVJzr6B8zFMPEzF SN4l5rJBy65P7R3bqmDA+zdS6RtXaPiGO7CVgoe/OeMPOa9XFDBg4PPJAmyBbbEGTyYu JBxqp/hvQp+NsbXbx9FCr33xGeMJMKUQlcageJagKZ0GyGkOlacVclqWLl2y1SwbB24R TtZQ== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y7si4363285edv.512.2020.04.29.16.43.15; Wed, 29 Apr 2020 16:43:50 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727028AbgD2XlF (ORCPT + 99 others); Wed, 29 Apr 2020 19:41:05 -0400 Received: from netrider.rowland.org ([192.131.102.5]:47261 "HELO netrider.rowland.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S1726481AbgD2XlF (ORCPT ); Wed, 29 Apr 2020 19:41:05 -0400 Received: (qmail 7909 invoked by uid 500); 29 Apr 2020 19:41:03 -0400 Received: from localhost (sendmail-bs@127.0.0.1) by localhost with SMTP; 29 Apr 2020 19:41:03 -0400 Date: Wed, 29 Apr 2020 19:41:03 -0400 (EDT) From: Alan Stern X-X-Sender: stern@netrider.rowland.org To: syzbot cc: andreyknvl@google.com, , , , , Subject: Re: WARNING in usbhid_raw_request/usb_submit_urb (3) In-Reply-To: <0000000000001aa0e705a473d05c@google.com> 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 Wed, 29 Apr 2020, syzbot wrote: > Hello, > > syzbot has tested the proposed patch and the reproducer did not trigger crash: > > Reported-and-tested-by: syzbot+db339689b2101f6f6071@syzkaller.appspotmail.com Good. Here's an improved version of the patch. Alan Stern #syz test: https://github.com/google/kasan.git 0fa84af8 Index: usb-devel/drivers/hid/usbhid/hid-core.c =================================================================== --- usb-devel.orig/drivers/hid/usbhid/hid-core.c +++ usb-devel/drivers/hid/usbhid/hid-core.c @@ -87,6 +87,7 @@ static int hid_start_in(struct hid_devic if (test_bit(HID_IN_POLLING, &usbhid->iofl) && !test_bit(HID_DISCONNECTED, &usbhid->iofl) && !test_bit(HID_SUSPENDED, &usbhid->iofl) && + !test_bit(HID_RESET_PENDING, &usbhid->iofl) && !test_and_set_bit(HID_IN_RUNNING, &usbhid->iofl)) { rc = usb_submit_urb(usbhid->urbin, GFP_ATOMIC); if (rc != 0) { @@ -339,6 +340,9 @@ static int hid_submit_out(struct hid_dev struct usbhid_device *usbhid = hid->driver_data; int r; + if (test_bit(HID_RESET_PENDING, &usbhid->iofl)) + return -EAGAIN; + report = usbhid->out[usbhid->outtail].report; raw_report = usbhid->out[usbhid->outtail].raw_report; @@ -370,6 +374,9 @@ static int hid_submit_ctrl(struct hid_de int len, r; struct usbhid_device *usbhid = hid->driver_data; + if (test_bit(HID_RESET_PENDING, &usbhid->iofl)) + return -EAGAIN; + report = usbhid->ctrl[usbhid->ctrltail].report; raw_report = usbhid->ctrl[usbhid->ctrltail].raw_report; dir = usbhid->ctrl[usbhid->ctrltail].dir;