From 91a1929f0722140afa9872423c9d07aa19b5fb0a Mon Sep 17 00:00:00 2001 From: Attilio Rao Date: Wed, 6 Jul 2011 15:09:52 +0000 Subject: [PATCH] Handle a race between device_pager and devsw in a more graceful manner: return an error code rather than panic the kernel. Sponsored by: Sandvine Incorporated Reviewed by: kib Tested by: pho MFC after: 2 weeks --- sys/vm/device_pager.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sys/vm/device_pager.c b/sys/vm/device_pager.c index f2131dd29f49..411482a3cc25 100644 --- a/sys/vm/device_pager.c +++ b/sys/vm/device_pager.c @@ -217,8 +217,10 @@ dev_pager_getpages(object, m, count, reqpage) memattr = object->memattr; VM_OBJECT_UNLOCK(object); csw = dev_refthread(dev, &ref); - if (csw == NULL) - panic("dev_pager_getpage: no cdevsw"); + if (csw == NULL) { + VM_OBJECT_LOCK(object); + return (VM_PAGER_FAIL); + } td = curthread; fpop = td->td_fpop; td->td_fpop = NULL;