From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: Re: [PATCH Linux-2.6.18] scsifront: avoid aquiring same lock twice if ring is full Date: Wed, 14 Jan 2015 05:27:12 +0100 Message-ID: <54B5F020.3080903@suse.com> References: <1421166178-626-1-git-send-email-jgross@suse.com> <20150113185358.GE5962@reaktio.net> Mime-Version: 1.0 Content-Type: text/plain; charset="windows-1252"; Format="flowed" Content-Transfer-Encoding: quoted-printable Return-path: In-Reply-To: <20150113185358.GE5962@reaktio.net> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: =?windows-1252?Q?Pasi_K=E4rkk=E4inen?= Cc: jbeulich@suse.com, xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org On 01/13/2015 07:53 PM, Pasi K=E4rkk=E4inen wrote: > Hi, > > On Tue, Jan 13, 2015 at 05:22:58PM +0100, Juergen Gross wrote: >> The locking in scsifront_dev_reset_handler() is obviously wrong. In >> case of a full ring the host lock is aquired twice. >> >> Fixing this issue enables to get rid of the endless fo loop with an >> explicit break statement. >> > > Is this patch needed in upstream Linux kernel aswell, now that Xen PVSCSI= drivers are in upstream Linux ? No, especially this part of the code was reorganized and doesn't have that issue. Juergen > > > Thanks, > > -- Pasi > > >> Signed-off-by: Juergen Gross >> --- >> >> diff -r 078f1bb69ea5 drivers/xen/scsifront/scsifront.c >> --- a/drivers/xen/scsifront/scsifront.c Wed Dec 10 10:22:39 2014 +0100 >> +++ b/drivers/xen/scsifront/scsifront.c Tue Jan 13 14:32:33 2015 +0100 >> @@ -447,12 +447,10 @@ static int scsifront_dev_reset_handler(s >> uint16_t rqid; >> int err =3D 0; >> >> - for (;;) { >> #if LINUX_VERSION_CODE >=3D KERNEL_VERSION(2,6,12) >> - spin_lock_irq(host->host_lock); >> + spin_lock_irq(host->host_lock); >> #endif >> - if (!RING_FULL(&info->ring)) >> - break; >> + while (RING_FULL(&info->ring)) { >> if (err) { >> #if LINUX_VERSION_CODE >=3D KERNEL_VERSION(2,6,12) >> spin_unlock_irq(host->host_lock); >> >> _______________________________________________ >> Xen-devel mailing list >> Xen-devel@lists.xen.org >> http://lists.xen.org/xen-devel >