aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve French <sfrench@us.ibm.com>2006-03-31 17:43:50 -0500
committerSteve French <sfrench@us.ibm.com>2006-03-31 17:43:50 -0500
commit06bcfedd05448e63cae8924074bfacdf82bb17d4 (patch)
treec213b29cad1f44db615f5293476abd249618b70d
parente9917a000fcc370408c8b7b83f2e85dba5fffbd4 (diff)
[CIFS] Fix typo in earlier cifs_unlink change and protect one
extra path. Since cifs_unlink can also be called from rename path and there was one report of oops am making the extra check for null inode. Signed-off-by: Steve French <sfrench@us.ibm.com>
-rw-r--r--fs/cifs/inode.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
index ca91ea38d611..957ddd1571c6 100644
--- a/fs/cifs/inode.c
+++ b/fs/cifs/inode.c
@@ -565,14 +565,14 @@ int cifs_unlink(struct inode *inode, struct dentry *direntry)
565 struct cifsInodeInfo *cifsInode; 565 struct cifsInodeInfo *cifsInode;
566 FILE_BASIC_INFO *pinfo_buf; 566 FILE_BASIC_INFO *pinfo_buf;
567 567
568 cFYI(1, ("cifs_unlink, inode = 0x%p with ", inode)); 568 cFYI(1, ("cifs_unlink, inode = 0x%p", inode));
569 569
570 xid = GetXid(); 570 xid = GetXid();
571 571
572 if(inode) 572 if(inode)
573 cifs_sb = CIFS_SB(inode->i_sb); 573 cifs_sb = CIFS_SB(inode->i_sb);
574 else 574 else
575 cifs_sb = CIFS_SB(dentry->d_sb); 575 cifs_sb = CIFS_SB(direntry->d_sb);
576 pTcon = cifs_sb->tcon; 576 pTcon = cifs_sb->tcon;
577 577
578 /* Unlink can be called from rename so we can not grab the sem here 578 /* Unlink can be called from rename so we can not grab the sem here
@@ -695,9 +695,11 @@ int cifs_unlink(struct inode *inode, struct dentry *direntry)
695 when needed */ 695 when needed */
696 direntry->d_inode->i_ctime = current_fs_time(inode->i_sb); 696 direntry->d_inode->i_ctime = current_fs_time(inode->i_sb);
697 } 697 }
698 inode->i_ctime = inode->i_mtime = current_fs_time(inode->i_sb); 698 if(inode) {
699 cifsInode = CIFS_I(inode); 699 inode->i_ctime = inode->i_mtime = current_fs_time(inode->i_sb);
700 cifsInode->time = 0; /* force revalidate of dir as well */ 700 cifsInode = CIFS_I(inode);
701 cifsInode->time = 0; /* force revalidate of dir as well */
702 }
701 703
702 kfree(full_path); 704 kfree(full_path);
703 FreeXid(xid); 705 FreeXid(xid);