Whamcloud - gitweb
b=4336
[fs/lustre-release.git] / lustre / kernel_patches / patches / ext3-use-after-free-2.4.19-pre1.patch
1  ./fs/ext3/namei.c |   11 +++++------
2  1 files changed, 5 insertions(+), 6 deletions(-)
3
4 Index: linux-2.4.19-pre1/./fs/ext3/namei.c
5 ===================================================================
6 --- linux-2.4.19-pre1.orig/./fs/ext3/namei.c    2003-11-21 01:52:06.000000000 +0300
7 +++ linux-2.4.19-pre1/./fs/ext3/namei.c 2003-11-21 01:58:15.000000000 +0300
8 @@ -1522,8 +1522,11 @@
9  {
10         int err = ext3_add_entry(handle, dentry, inode);
11         if (!err) {
12 -               d_instantiate(dentry, inode);
13 -               return 0;
14 +               err = ext3_mark_inode_dirty(handle, inode);
15 +               if (err == 0) {
16 +                       d_instantiate(dentry, inode);
17 +                       return 0;
18 +               }
19         }
20         ext3_dec_count(handle, inode);
21         iput(inode);
22 @@ -1559,7 +1562,6 @@
23                 inode->i_op = &ext3_file_inode_operations;
24                 inode->i_fop = &ext3_file_operations;
25                 inode->i_mapping->a_ops = &ext3_aops;
26 -               ext3_mark_inode_dirty(handle, inode);
27                 err = ext3_add_nondir(handle, dentry, inode);
28         }
29         ext3_journal_stop(handle, dir);
30 @@ -1586,7 +1588,6 @@
31         err = PTR_ERR(inode);
32         if (!IS_ERR(inode)) {
33                 init_special_inode(inode, mode, rdev);
34 -               ext3_mark_inode_dirty(handle, inode);
35                 err = ext3_add_nondir(handle, dentry, inode);
36         }
37         ext3_journal_stop(handle, dir);
38 @@ -2035,7 +2036,6 @@
39                 inode->i_size = l-1;
40         }
41         inode->u.ext3_i.i_disksize = inode->i_size;
42 -       ext3_mark_inode_dirty(handle, inode);
43         err = ext3_add_nondir(handle, dentry, inode);
44  out_stop:
45         ext3_journal_stop(handle, dir);
46 @@ -2069,7 +2069,6 @@
47         ext3_inc_count(handle, inode);
48         atomic_inc(&inode->i_count);
49  
50 -       ext3_mark_inode_dirty(handle, inode);
51         err = ext3_add_nondir(handle, dentry, inode);
52         ext3_journal_stop(handle, dir);
53         return err;