a9e42ac07ad1e6cc426c87e2595d138d0162e7c3
[openwrt.git] / target / linux / generic-2.6 / patches-2.6.25 / 211-mini_fo_2.6.25_dentry_open_war.patch
1 Index: linux-2.6.25.4/fs/mini_fo/meta.c
2 ===================================================================
3 --- linux-2.6.25.4.orig/fs/mini_fo/meta.c
4 +++ linux-2.6.25.4/fs/mini_fo/meta.c
5 @@ -442,6 +442,11 @@ int meta_write_d_entry(dentry_t *dentry,
6                            S_IRUSR | S_IWUSR);
7  #endif
8         }
9 +
10 +       /* $%& err, is this correct? */
11 +       meta_mnt = stopd(dentry->d_inode->i_sb)->hidden_mnt2;
12 +       mntget(meta_mnt);
13 +
14          /* open META-file for writing */
15          meta_file = dentry_open(meta_dentry, meta_mnt, 0x1);
16          if(!meta_file || IS_ERR(meta_file)) {
17 @@ -535,6 +540,11 @@ int meta_write_r_entry(dentry_t *dentry,
18                            meta_dentry, S_IRUSR | S_IWUSR);
19  #endif
20         }
21 +
22 +       /* $%& err, is this correct? */
23 +       meta_mnt = stopd(dentry->d_inode->i_sb)->hidden_mnt2;
24 +       mntget(meta_mnt);
25 +
26          /* open META-file for writing */
27          meta_file = dentry_open(meta_dentry, meta_mnt, 0x1);
28          if(!meta_file || IS_ERR(meta_file)) {
29 @@ -671,14 +681,16 @@ int meta_sync_d_list(dentry_t *dentry, i
30                 }
31         }
32  
33 +       /* $%& err, is this correct? */
34 +       meta_mnt = stopd(dentry->d_inode->i_sb)->hidden_mnt2;
35 +       mntget(meta_mnt);
36 +
37          /* open META-file for writing */
38          meta_file = dentry_open(meta_dentry, meta_mnt, 0x1);
39          if(!meta_file || IS_ERR(meta_file)) {
40                  printk(KERN_CRIT "mini_fo: meta_sync_d_list: \
41                                    ERROR opening meta file.\n");
42 -               /* we don't mntget so we dont't mntput (for now)
43 -                * mntput(meta_mnt);
44 -                */
45 +               mntput(meta_mnt);
46                 dput(meta_dentry);
47                 err = -1;
48                  goto out;
49 @@ -811,14 +823,16 @@ int meta_sync_r_list(dentry_t *dentry, i
50                 }
51         }
52  
53 +       /* $%& err, is this correct? */
54 +       meta_mnt = stopd(dentry->d_inode->i_sb)->hidden_mnt2;
55 +       mntget(meta_mnt);
56 +
57          /* open META-file for writing */
58          meta_file = dentry_open(meta_dentry, meta_mnt, 0x1);
59          if(!meta_file || IS_ERR(meta_file)) {
60                  printk(KERN_CRIT "mini_fo: meta_sync_r_list: \
61                                    ERROR opening meta file.\n");
62 -               /* we don't mntget so we dont't mntput (for now)
63 -                * mntput(meta_mnt);
64 -                */
65 +               mntput(meta_mnt);
66                 dput(meta_dentry);
67                 err = -1;
68                  goto out;