X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=linux_module%2Fiface-file.c;h=be31f16194b17234e0c3c5756b1567dc1aca5ca0;hb=f0d84b1fde4ae3f2e72de0de94610fd8f2f79975;hp=be8ed3ec817f9f0e5cde77a7e1ef93a54366d79e;hpb=c3b52f20c568ae977924e35340d0cc259634d44f;p=palacios.git diff --git a/linux_module/iface-file.c b/linux_module/iface-file.c index be8ed3e..be31f16 100644 --- a/linux_module/iface-file.c +++ b/linux_module/iface-file.c @@ -106,7 +106,7 @@ static int mkdir_recursive(const char * path, unsigned short perms) { static int palacios_file_mkdir(const char * pathname, unsigned short perms, int recurse) { /* Welcome to the jungle... */ -#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,41) /* DO NOT REFERENCE THIS VARIABLE */ /* It only exists to provide version compatibility */ struct path tmp_path; @@ -123,12 +123,12 @@ static int palacios_file_mkdir(const char * pathname, unsigned short perms, int } /* Before Linux 3.1 this was somewhat more difficult */ -#if LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0) +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,41) { struct nameidata nd; // I'm not 100% sure about the version here, but it was around this time that the API changed -#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,35) +#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,37) ret = kern_path_parent(pathname, &nd); #else @@ -204,9 +204,12 @@ static void * palacios_file_open(const char * path, int mode, void * private_dat } + pfile->mode |= O_LARGEFILE; + + pfile->filp = filp_open(path, pfile->mode, 0); - if (pfile->filp == NULL) { + if (IS_ERR(pfile->filp)) { printk("Cannot open file: %s\n", path); return NULL; } @@ -315,8 +318,6 @@ static int file_init( void ) { V3_Init_File(&palacios_file_hooks); - palacios_file_mkdir("/test/test/test/qr14/acqwe2",0755, 1); - return 0; } @@ -343,6 +344,7 @@ static int guest_file_init(struct v3_guest * guest, void ** vm_data) { static int guest_file_deinit(struct v3_guest * guest, void * vm_data) { + kfree(vm_data); return 0; }