Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp79906pxk; Mon, 5 Oct 2020 18:28:20 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy25Nx6oY4kBB/30njprliceQyBsuiX9PaCiMqY7ykEbeNuSLAF/qdq+xpt9J0XfNx1i654 X-Received: by 2002:a17:907:2115:: with SMTP id qn21mr2639350ejb.278.1601947700645; Mon, 05 Oct 2020 18:28:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1601947700; cv=none; d=google.com; s=arc-20160816; b=rn/lmHXvrDPQEx73ZCmmuW0pp5QT1QgzK81FrlnzNI6hi76qr7Kzg3vEaWO4ckabcN zw3zOpN3wPqn0VAi8Mc1dN32lQETy9mRdBqzCvMgL9gCZkKi6HnaH5nRuzTaQLxp3V2T 0SsB0TJfsCu1aAEkuVIqd4/xWm4veNSZgaiIUXgMcbzHJxdeFBDgl+2YDzI9ahdhZiks UApaunWPs5Q1aH7JI+jXL8gzxfTz4lj+YOopg5wsl+GzzgGksiuPEn5kXPFvJ+87f+7e iHxlsNzmTawJNfgCKD+k9o6l68Uw+UAqjaKPCfjZh0PubRhaAWEA/QNHymCpCnz6fHOf ljVA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:user-agent:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date; bh=j8/E4kU2bjQkzQtpDXmgi7bo0AipyTLBLqwX5oUjSNg=; b=1FmNyKvo1OYCeKXvC62cpbcdRUlt7SLa1Nn3+XftC/a4p74xYMbytHSr1UZCy0W+S9 DzRj/mWsu80l5LhXKsXzqgpjtJqbpp77hnjl/BRxKgQFwS4dOScCIiHw+BmiAJs+YSrJ PpoiMfryzbAJqLHFqtdcovJRiX60ElLOyKlWmwZI+q+wiSrTuYrD7VciDcf/XwpFcg+i +wpwOgsRBfcXJMx0n8+fAwd1GuZXFghFlBAyI9bjzpmgRybDSxegotCQS955LfjqW3kV t9PXdAv+bTFS+9RLWCPfEH3OdHbWk3TDoHMiDLQDH1XWpOeEJNc9TcMX/NZbk6XoAaIR xB7g== 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 h5si1022886eji.357.2020.10.05.18.27.57; Mon, 05 Oct 2020 18:28:20 -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 S1725912AbgJFBXe (ORCPT + 99 others); Mon, 5 Oct 2020 21:23:34 -0400 Received: from netrider.rowland.org ([192.131.102.5]:48333 "HELO netrider.rowland.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S1725922AbgJFBXe (ORCPT ); Mon, 5 Oct 2020 21:23:34 -0400 Received: (qmail 399907 invoked by uid 1000); 5 Oct 2020 21:23:33 -0400 Date: Mon, 5 Oct 2020 21:23:33 -0400 From: Alan Stern To: Shuah Khan Cc: Andrey Konovalov , Greg Kroah-Hartman , Valentina Manea , Shuah Khan , USB list , LKML , Dmitry Vyukov , Nazime Hande Harputluoglu , syzkaller Subject: Re: Is usb_hcd_giveback_urb() allowed in task context? Message-ID: <20201006012333.GA399825@rowland.harvard.edu> References: <20201005151857.GA2309511@kroah.com> <20201005152540.GG376584@rowland.harvard.edu> <65b4ff62-f9c8-b9cf-50bb-c9b08cce7230@linuxfoundation.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <65b4ff62-f9c8-b9cf-50bb-c9b08cce7230@linuxfoundation.org> User-Agent: Mutt/1.10.1 (2018-07-13) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Oct 05, 2020 at 05:38:22PM -0600, Shuah Khan wrote: > On 10/5/20 9:25 AM, Alan Stern wrote: > > On Mon, Oct 05, 2020 at 05:21:30PM +0200, Andrey Konovalov wrote: > > No, no -- it won't work right if it's called in process context. Not > > only do the spinlock calls leave the interrupt flag unchanged, also the > > driver callback routines may expect to be invoked with interrupts > > disabled. (We have tried to fix this, but I'm not at all certain that > > all the cases have been updated.) > > > > In the case of vhci case, usb_hcd_giveback_urb() is called from vhci's > urb_enqueue, when it determines it doesn't need to xmit the urb and can give > it back. This path runs in task context. > > Do you have any recommendation on how this case can be handled? Just call local_irq_disable() before usb_hcd_giveback_urb(), and local_irq_enable() afterward. Alan Stern