diff options
-rw-r--r-- | sys/kern/kern_lkm.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/sys/kern/kern_lkm.c b/sys/kern/kern_lkm.c index 33c5ef3..b42d608 100644 --- a/sys/kern/kern_lkm.c +++ b/sys/kern/kern_lkm.c @@ -741,6 +741,15 @@ _lkm_dev(lkmtp, cmd) break; case LM_DT_CHAR: + if ((i = args->lkm_offset) == -1) + descrip = (dev_t) -1; + else + descrip = makedev(args->lkm_offset,0); + if ( err = cdevsw_add(&descrip, args->lkm_dev.cdev, + &(args->lkm_olddev.cdev))) { + break; + } + args->lkm_offset = major(descrip) ; break; default: @@ -752,11 +761,11 @@ _lkm_dev(lkmtp, cmd) case LKM_E_UNLOAD: /* current slot... */ i = args->lkm_offset; + descrip = makedev(i,0); switch(args->lkm_devtype) { case LM_DT_BLOCK: /* replace current slot contents with old contents */ - descrip = makedev(i,0); bdevsw_add(&descrip, args->lkm_olddev.bdev,NULL); break; |