VirtualBox

Ticket #13741: diff_linux_3.19

File diff_linux_3.19, 3.7 KB (added by Frank Mehnert, 10 years ago)
Line 
1Index: 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;
50Index: 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)
73Index: 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+

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy