summaryrefslogtreecommitdiffstats
path: root/sys/vm
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>1999-10-04 13:09:30 +0000
committerphk <phk@FreeBSD.org>1999-10-04 13:09:30 +0000
commitff20b1e15daec9c5e888431ce34127a17fe142ed (patch)
tree882bd37a8d9b23c0091ef184c646104e5bde2d6d /sys/vm
parenta8e22c41f54af176056ab89124555e2194ea8dce (diff)
downloadFreeBSD-src-ff20b1e15daec9c5e888431ce34127a17fe142ed.zip
FreeBSD-src-ff20b1e15daec9c5e888431ce34127a17fe142ed.tar.gz
Introduce swopen to prevent blockdevice opens and insist on minor==0.
Diffstat (limited to 'sys/vm')
-rw-r--r--sys/vm/vm_swap.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/sys/vm/vm_swap.c b/sys/vm/vm_swap.c
index 4fc57a0..bafe434 100644
--- a/sys/vm/vm_swap.c
+++ b/sys/vm/vm_swap.c
@@ -49,6 +49,7 @@
#include <sys/kernel.h>
#include <sys/lock.h>
#include <sys/conf.h>
+#include <sys/stat.h>
#include <vm/vm.h>
#include <vm/vm_extern.h>
#include <vm/swap_pager.h>
@@ -63,13 +64,14 @@
* provided as a character (raw) device.
*/
+static d_open_t swopen;
static d_strategy_t swstrategy;
#define CDEV_MAJOR 4
#define BDEV_MAJOR 26
static struct cdevsw sw_cdevsw = {
- /* open */ nullopen,
+ /* open */ swopen,
/* close */ nullclose,
/* read */ physread,
/* write */ physwrite,
@@ -108,6 +110,20 @@ int vm_swap_size;
* The bp is expected to be locked and *not* B_DONE on call.
*/
+static int
+swopen(dev, flag, mode, p)
+ dev_t dev;
+ int flag;
+ int mode;
+ struct proc *p;
+{
+
+ if (mode == S_IFBLK || minor(dev))
+ return (ENXIO);
+ return (0);
+}
+
+
static void
swstrategy(bp)
register struct buf *bp;
OpenPOWER on IntegriCloud