File dazuko_redirfs_2.6.27.patch of Package dazuko
diff -Nru dazuko-2.3.6-pre2-a/dazuko_linux26.h dazuko-2.3.6-pre2-b/dazuko_linux26.h
--- dazuko-2.3.6-pre2-a/dazuko_linux26.h 2008-02-20 22:05:34.000000000 +0100
+++ dazuko-2.3.6-pre2-b/dazuko_linux26.h 2008-08-27 13:54:51.000000000 +0200
@@ -24,7 +24,13 @@
#define DAZUKO_LINUX26_H
#include <linux/module.h>
+#include <linux/version.h>
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,27)
#include <asm/semaphore.h>
+#else
+#include <linux/semaphore.h>
+#endif
#define DEVICE_NAME "dazuko"
diff -Nru dazuko-2.3.6-pre2-a/dazuko_redirfs.c dazuko-2.3.6-pre2-b/dazuko_redirfs.c
--- dazuko-2.3.6-pre2-a/dazuko_redirfs.c 2008-07-17 20:00:02.000000000 +0200
+++ dazuko-2.3.6-pre2-b/dazuko_redirfs.c 2008-08-27 15:18:23.000000000 +0200
@@ -66,19 +66,19 @@
static int dev_major = -1;
static int module_disabled = 0;
-enum redirfs_rv dazukoflt_permission(redirfs_context context, struct redirfs_args *args);
+enum redirfs_rv dazukoflt_open(redirfs_context context, struct redirfs_args *args);
static redirfs_filter dazukoflt;
static struct redirfs_filter_info dazukoflt_info = {
.owner = THIS_MODULE,
.name = "dazukoflt",
- .priority = 1,
+ .priority = 860000000,
.active = 1,
};
static struct redirfs_op_info dazukoflt_op_info[] = {
- { REDIRFS_REG_IOP_PERMISSION, dazukoflt_permission, NULL },
+ { REDIRFS_REG_FOP_OPEN, dazukoflt_open, NULL },
{ REDIRFS_OP_END, NULL, NULL }
};
@@ -629,7 +629,7 @@
/* system hooks */
-int dazuko_sys_generic(struct inode *inode, int mask, struct nameidata *nd)
+int dazuko_sys_generic(struct inode *inode, struct nameidata *nd)
{
struct dazuko_file_struct *dfs = NULL;
int error = 0;
@@ -645,34 +645,6 @@
dazuko_bzero(&event_p, sizeof(event_p));
- if ((mask & MAY_EXEC) != 0)
- {
- event = DAZUKO_ON_EXEC;
- daemon_is_allowed = 0;
- }
- else
- {
- /* mask == 0 is passed in when a file is created */
- if (mask == 0 || (mask & (MAY_WRITE|MAY_APPEND)) != 0)
- {
- if ((mask & MAY_READ) != 0)
- {
- event_p.flags = O_RDWR;
- }
- else
- {
- event_p.flags = O_WRONLY;
- }
-
- event_p.set_flags = 1;
- }
- else if ((mask & MAY_READ) != 0)
- {
- event_p.flags = O_RDONLY;
- event_p.set_flags = 1;
- }
- }
-
xp_id.pid = current->pid;
xp_id.tgid = current->tgid;
xp_id.file = NULL;
@@ -721,18 +693,14 @@
return 0;
}
-enum redirfs_rv dazukoflt_permission(redirfs_context context, struct redirfs_args *args)
+enum redirfs_rv dazukoflt_open(redirfs_context context, struct redirfs_args *args)
{
- if (!args->args.i_permission.nd)
- return REDIRFS_CONTINUE;
-
- if (!args->args.i_permission.mask)
- return REDIRFS_CONTINUE;
+ struct nameidata nd;
- if (!args->args.i_permission.nd)
- return REDIRFS_CONTINUE;
+ nd.path.dentry = args->args.f_open.file->f_dentry;
+ nd.path.mnt = args->args.f_open.file->f_vfsmnt;
- if (dazuko_sys_generic(args->args.i_permission.inode, args->args.i_permission.mask, args->args.i_permission.nd) != 0)
+ if (dazuko_sys_generic(args->args.f_open.file->f_dentry->d_inode, &nd) != 0)
{
args->rv.rv_int = -EACCES;
return REDIRFS_STOP;
@@ -804,20 +772,11 @@
return dev_major;
}
-#ifndef WITHOUT_UDEV
-#ifdef USE_CLASS
dazuko_class = class_create(THIS_MODULE, DEVICE_NAME);
-#if defined (CLASS_class_device_create_2_6_15)
- class_device_create(dazuko_class, NULL, MKDEV(dev_major, 0), NULL, DEVICE_NAME);
-#elif defined (CLASS_device_create_2_6_26)
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,27)
device_create(dazuko_class, NULL, MKDEV(dev_major, 0), DEVICE_NAME);
#else
- class_device_create(dazuko_class, MKDEV(dev_major, 0), NULL, DEVICE_NAME);
-#endif
-#else
- dazuko_class = class_simple_create(THIS_MODULE, DEVICE_NAME);
- class_simple_device_add(dazuko_class, MKDEV(dev_major, 0), NULL, DEVICE_NAME);
-#endif
+ device_create(dazuko_class, NULL, MKDEV(dev_major, 0), NULL, DEVICE_NAME);
#endif
return 0;
@@ -826,21 +785,9 @@
inline int xp_sys_unhook()
{
if (!module_disabled) {
- unregister_chrdev(dev_major, DEVICE_NAME);
-
-#ifndef WITHOUT_UDEV
-#ifdef USE_CLASS
-#if defined (CLASS_device_create_2_6_26)
device_destroy(dazuko_class, MKDEV(dev_major, 0));
-#else
- class_device_destroy(dazuko_class, MKDEV(dev_major, 0));
-#endif
class_destroy(dazuko_class);
-#else
- class_simple_device_remove(MKDEV(dev_major, 0));
- class_simple_destroy(dazuko_class);
-#endif
-#endif
+ unregister_chrdev(dev_major, DEVICE_NAME);
}
redirfs_delete_filter(dazukoflt);