#include <linux/moduleparam.h>
#include <linux/types.h>
#include <linux/kernel.h>
+#include <linux/version.h>
#include <linux/fs_struct.h>
#include <linux/fs.h>
#include <linux/mm.h>
#error "This code does not support your architecture"
#endif
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)
+static char *aclpath = "procprotect";
+#else
static char *aclpath __devinitdata = "procprotect";
+#endif
+
static struct qstr aclqpath;
module_param(aclpath, charp, 0);
static int lookup_slow_ret(struct kretprobe_instance *ri, struct pt_regs *regs)
{
- struct procprotect_ctx *ctx = (struct procprotect_ctx *) ri->data;
- int ret = regs->ax;
+ struct procprotect_ctx *ctx;
+ int ret;
+
+ if (!ri) {/* Race condition?*/ return 0;}
+ ctx = (struct procprotect_ctx *) ri->data;
+ ret = regs->ax;
if (ret==0) {
/* The kernel is going to honor the request. Here's where we step in */
static int __init procprotect_init(void)
{
- printk("Procprotect: starting procprotect version %s with ACLs at path %s.\n",
- VERSION_STR, aclpath);
int ret;
int i;
+ printk("Procprotect: starting procprotect version %s with ACLs at path %s.\n",
+ VERSION_STR, aclpath);
+
for(i=0;i<HASH_SIZE;i++) {
INIT_HLIST_HEAD(&procprotect_hash[i]);
}