| 1 | Index: src/VBox/Additions/linux/sharedfolders/regops.c
|
|---|
| 2 | ===================================================================
|
|---|
| 3 | --- src/VBox/Additions/linux/sharedfolders/regops.c (revision 97544)
|
|---|
| 4 | +++ src/VBox/Additions/linux/sharedfolders/regops.c (revision 97545)
|
|---|
| 5 | @@ -108,7 +108,7 @@
|
|---|
| 6 | size_t tmp_size;
|
|---|
| 7 | size_t left = size;
|
|---|
| 8 | ssize_t total_bytes_read = 0;
|
|---|
| 9 | - struct inode *inode = file->f_dentry->d_inode;
|
|---|
| 10 | + struct inode *inode = GET_F_DENTRY(file)->d_inode;
|
|---|
| 11 | struct sf_glob_info *sf_g = GET_GLOB_INFO(inode->i_sb);
|
|---|
| 12 | struct sf_reg_info *sf_r = file->private_data;
|
|---|
| 13 | loff_t pos = *off;
|
|---|
| 14 | @@ -183,7 +183,7 @@
|
|---|
| 15 | size_t tmp_size;
|
|---|
| 16 | size_t left = size;
|
|---|
| 17 | ssize_t total_bytes_written = 0;
|
|---|
| 18 | - struct inode *inode = file->f_dentry->d_inode;
|
|---|
| 19 | + struct inode *inode = GET_F_DENTRY(file)->d_inode;
|
|---|
| 20 | struct sf_inode_info *sf_i = GET_INODE_INFO(inode);
|
|---|
| 21 | struct sf_glob_info *sf_g = GET_GLOB_INFO(inode->i_sb);
|
|---|
| 22 | struct sf_reg_info *sf_r = file->private_data;
|
|---|
| 23 | @@ -454,7 +454,7 @@
|
|---|
| 24 | #elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0)
|
|---|
| 25 | static struct page *sf_reg_nopage(struct vm_area_struct *vma, unsigned long vaddr, int *type)
|
|---|
| 26 | # define SET_TYPE(t) *type = (t)
|
|---|
| 27 | -#else /* LINUX_VERSION_CODE < KERNEL_VERSION (2, 6, 0) */
|
|---|
| 28 | +#else /* LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) */
|
|---|
| 29 | static struct page *sf_reg_nopage(struct vm_area_struct *vma, unsigned long vaddr, int unused)
|
|---|
| 30 | # define SET_TYPE(t)
|
|---|
| 31 | #endif
|
|---|
| 32 | @@ -465,7 +465,7 @@
|
|---|
| 33 | uint32_t nread = PAGE_SIZE;
|
|---|
| 34 | int err;
|
|---|
| 35 | struct file *file = vma->vm_file;
|
|---|
| 36 | - struct inode *inode = file->f_dentry->d_inode;
|
|---|
| 37 | + struct inode *inode = GET_F_DENTRY(file)->d_inode;
|
|---|
| 38 | struct sf_glob_info *sf_g = GET_GLOB_INFO(inode->i_sb);
|
|---|
| 39 | struct sf_reg_info *sf_r = file->private_data;
|
|---|
| 40 |
|
|---|
| 41 | @@ -605,7 +605,7 @@
|
|---|
| 42 | #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0)
|
|---|
| 43 | static int sf_readpage(struct file *file, struct page *page)
|
|---|
| 44 | {
|
|---|
| 45 | - struct inode *inode = file->f_dentry->d_inode;
|
|---|
| 46 | + struct inode *inode = GET_F_DENTRY(file)->d_inode;
|
|---|
| 47 | struct sf_glob_info *sf_g = GET_GLOB_INFO(inode->i_sb);
|
|---|
| 48 | struct sf_reg_info *sf_r = file->private_data;
|
|---|
| 49 | uint32_t nread = PAGE_SIZE;
|
|---|
| 50 | Index: src/VBox/Additions/linux/sharedfolders/dirops.c
|
|---|
| 51 | ===================================================================
|
|---|
| 52 | --- src/VBox/Additions/linux/sharedfolders/dirops.c (revision 97544)
|
|---|
| 53 | +++ src/VBox/Additions/linux/sharedfolders/dirops.c (revision 97545)
|
|---|
| 54 | @@ -126,15 +126,13 @@
|
|---|
| 55 |
|
|---|
| 56 | TRACE();
|
|---|
| 57 |
|
|---|
| 58 | - sf_g = GET_GLOB_INFO(dir->f_dentry->d_inode->i_sb);
|
|---|
| 59 | + inode = GET_F_DENTRY(dir)->d_inode;
|
|---|
| 60 | + sf_i = GET_INODE_INFO(inode);
|
|---|
| 61 | + sf_g = GET_GLOB_INFO(inode->i_sb);
|
|---|
| 62 | sf_d = dir->private_data;
|
|---|
| 63 |
|
|---|
| 64 | BUG_ON(!sf_g);
|
|---|
| 65 | BUG_ON(!sf_d);
|
|---|
| 66 | -
|
|---|
| 67 | - inode = dir->f_dentry->d_inode;
|
|---|
| 68 | - sf_i = GET_INODE_INFO(inode);
|
|---|
| 69 | -
|
|---|
| 70 | BUG_ON(!sf_i);
|
|---|
| 71 |
|
|---|
| 72 | if (sf_i->force_reread)
|
|---|
| 73 | Index: src/VBox/Additions/linux/sharedfolders/vfsmod.h
|
|---|
| 74 | ===================================================================
|
|---|
| 75 | --- src/VBox/Additions/linux/sharedfolders/vfsmod.h (revision 97544)
|
|---|
| 76 | +++ src/VBox/Additions/linux/sharedfolders/vfsmod.h (revision 97545)
|
|---|
| 77 | @@ -145,7 +145,7 @@
|
|---|
| 78 | # define SET_GLOB_INFO(sb, sf_g) (sb)->s_fs_info = sf_g
|
|---|
| 79 | #endif
|
|---|
| 80 |
|
|---|
| 81 | -#if LINUX_VERSION_CODE >= KERNEL_VERSION (2, 6, 19) || defined(KERNEL_FC6)
|
|---|
| 82 | +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19) || defined(KERNEL_FC6)
|
|---|
| 83 | /* FC6 kernel 2.6.18, vanilla kernel 2.6.19+ */
|
|---|
| 84 | # define GET_INODE_INFO(i) ((struct sf_inode_info *) (i)->i_private)
|
|---|
| 85 | # define SET_INODE_INFO(i, sf_i) (i)->i_private = sf_i
|
|---|
| 86 | @@ -155,5 +155,11 @@
|
|---|
| 87 | # define SET_INODE_INFO(i, sf_i) (i)->u.generic_ip = sf_i
|
|---|
| 88 | #endif
|
|---|
| 89 |
|
|---|
| 90 | +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)
|
|---|
| 91 | +# define GET_F_DENTRY(f) (f->f_path.dentry)
|
|---|
| 92 | +#else
|
|---|
| 93 | +# define GET_F_DENTRY(f) (f->f_dentry)
|
|---|
| 94 | #endif
|
|---|
| 95 |
|
|---|
| 96 | +#endif
|
|---|
| 97 | +
|
|---|