Module Name: src Committed By: riz Date: Mon Mar 7 04:19:42 UTC 2011
Modified Files: src/sys/arch/xen/xen [netbsd-5-1]: xbdback_xenbus.c Log Message: Pull up following revision(s) (requested by bouyer in ticket #1573): sys/arch/xen/xen/xbdback_xenbus.c: revision 1.33 Test and set xbdi->xbdi_cont at splbio(). Otherwise we could overwrite xbdi->xbdi_cont and process the same request twice. To generate a diff of this commit: cvs rdiff -u -r1.20.4.3 -r1.20.4.3.2.1 src/sys/arch/xen/xen/xbdback_xenbus.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/xen/xen/xbdback_xenbus.c diff -u src/sys/arch/xen/xen/xbdback_xenbus.c:1.20.4.3 src/sys/arch/xen/xen/xbdback_xenbus.c:1.20.4.3.2.1 --- src/sys/arch/xen/xen/xbdback_xenbus.c:1.20.4.3 Sat Oct 31 12:53:21 2009 +++ src/sys/arch/xen/xen/xbdback_xenbus.c Mon Mar 7 04:19:42 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: xbdback_xenbus.c,v 1.20.4.3 2009/10/31 12:53:21 sborrill Exp $ */ +/* $NetBSD: xbdback_xenbus.c,v 1.20.4.3.2.1 2011/03/07 04:19:42 riz Exp $ */ /* * Copyright (c) 2006 Manuel Bouyer. @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: xbdback_xenbus.c,v 1.20.4.3 2009/10/31 12:53:21 sborrill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: xbdback_xenbus.c,v 1.20.4.3.2.1 2011/03/07 04:19:42 riz Exp $"); #include <sys/types.h> #include <sys/param.h> @@ -1376,6 +1376,7 @@ struct xbdback_io *xbd_io; struct xbdback_instance *xbdi; int errp; + int s; xbd_io = bp->b_private; xbdi = xbd_io->xio_xbdi; @@ -1430,11 +1431,13 @@ atomic_dec_uint(&xbdi->xbdi_pendingreqs); buf_destroy(&xbd_io->xio_buf); xbdback_pool_put(&xbdback_io_pool, xbd_io); + s = splbio(); if (xbdi->xbdi_cont == NULL) { /* check if there is more work to do */ xbdi->xbdi_cont = xbdback_co_main; xbdback_trampoline(xbdi, xbdi); } + splx(s); } /*