1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
diff -Nur vhba-module-1.2.1.orig//kat/have_scsi_macros.c vhba-module-1.2.1/kat/have_scsi_macros.c
--- vhba-module-1.2.1.orig//kat/have_scsi_macros.c 2009-01-17 17:21:16.000000000 -0600
+++ vhba-module-1.2.1/kat/have_scsi_macros.c 2010-06-30 23:41:37.203194236 -0500
@@ -1,4 +1,3 @@
-#include <linux/autoconf.h>
#include <scsi/scsi_cmnd.h>
void testfunc (void);
diff -Nur vhba-module-1.2.1.orig//kat/scatterlist_has_page_link.c vhba-module-1.2.1/kat/scatterlist_has_page_link.c
--- vhba-module-1.2.1.orig//kat/scatterlist_has_page_link.c 2009-01-17 17:21:16.000000000 -0600
+++ vhba-module-1.2.1/kat/scatterlist_has_page_link.c 2010-06-30 23:40:49.982069552 -0500
@@ -1,4 +1,3 @@
-#include <linux/autoconf.h>
#include <linux/scatterlist.h>
/* Note: scatterlist.page_link is used in kernel (2.6.24 <= version < X) */
diff -Nur vhba-module-1.2.1.orig//vhba.c vhba-module-1.2.1/vhba.c
--- vhba-module-1.2.1.orig//vhba.c 2009-01-17 17:21:16.000000000 -0600
+++ vhba-module-1.2.1/vhba.c 2010-06-30 23:40:14.430097774 -0500
@@ -1,7 +1,7 @@
/*
* vhba.c
*
- * Copyright (C) 2007 Chia-I Wu <b90201047 AT ntu DOT edu DOT tw>
+ * Copyright (C) 2007-2010 Chia-I Wu <b90201047 AT ntu DOT edu DOT tw>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -26,6 +26,10 @@
#include <linux/platform_device.h>
#include <linux/miscdevice.h>
#include <linux/poll.h>
+#include <linux/slab.h>
+#ifdef CONFIG_COMPAT
+#include <linux/compat.h>
+#endif
#include <asm/uaccess.h>
#include <scsi/scsi.h>
#include <scsi/scsi_host.h>
@@ -52,7 +56,7 @@
dev_warn(&(scmd)->device->sdev_gendev, fmt, ##a)
-#define VHBA_MAX_SECTORS_PER_IO 128
+#define VHBA_MAX_SECTORS_PER_IO 256
#define VHBA_MAX_ID 32
#define VHBA_CAN_QUEUE 32
#define VHBA_INVALID_ID VHBA_MAX_ID
@@ -671,7 +675,7 @@
return ret;
}
-static int vhba_ctl_ioctl (struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
+static long vhba_ctl_ioctl (struct file *file, unsigned int cmd, unsigned long arg)
{
struct vhba_device *vdev = file->private_data;
struct vhba_host *vhost;
@@ -704,6 +708,15 @@
return -ENOTTY;
}
+#ifdef CONFIG_COMPAT
+static long vhba_ctl_compat_ioctl (struct file *file, unsigned int cmd, unsigned long arg)
+{
+ unsigned long compat_arg = (unsigned long)compat_ptr(arg);
+
+ return vhba_ctl_ioctl(file, cmd, compat_arg);
+}
+#endif
+
static unsigned int vhba_ctl_poll(struct file *file, poll_table *wait)
{
struct vhba_device *vdev = file->private_data;
@@ -781,7 +794,10 @@
.read = vhba_ctl_read,
.write = vhba_ctl_write,
.poll = vhba_ctl_poll,
- .ioctl = vhba_ctl_ioctl,
+ .unlocked_ioctl = vhba_ctl_ioctl,
+#ifdef CONFIG_COMPAT
+ .compat_ioctl = vhba_ctl_compat_ioctl,
+#endif
};
static struct miscdevice vhba_miscdev = {
|