diff options
-rw-r--r-- | fs/cifs/cifsfs.c | 3 | ||||
-rw-r--r-- | fs/cifs/file.c | 29 | ||||
-rw-r--r-- | fs/cifs/readdir.c | 27 |
3 files changed, 6 insertions, 53 deletions
diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c index faba4d69fe9..dd03e680f8f 100644 --- a/fs/cifs/cifsfs.c +++ b/fs/cifs/cifsfs.c | |||
@@ -529,8 +529,7 @@ static loff_t cifs_llseek(struct file *file, loff_t offset, int origin) | |||
529 | /* some applications poll for the file length in this strange | 529 | /* some applications poll for the file length in this strange |
530 | way so we must seek to end on non-oplocked files by | 530 | way so we must seek to end on non-oplocked files by |
531 | setting the revalidate time to zero */ | 531 | setting the revalidate time to zero */ |
532 | if(file->f_path.dentry->d_inode) | 532 | CIFS_I(file->f_path.dentry->d_inode)->time = 0; |
533 | CIFS_I(file->f_path.dentry->d_inode)->time = 0; | ||
534 | 533 | ||
535 | retval = cifs_revalidate(file->f_path.dentry); | 534 | retval = cifs_revalidate(file->f_path.dentry); |
536 | if (retval < 0) | 535 | if (retval < 0) |
diff --git a/fs/cifs/file.c b/fs/cifs/file.c index 2d3275bedb5..914b449f202 100644 --- a/fs/cifs/file.c +++ b/fs/cifs/file.c | |||
@@ -792,12 +792,7 @@ ssize_t cifs_user_write(struct file *file, const char __user *write_data, | |||
792 | int xid, long_op; | 792 | int xid, long_op; |
793 | struct cifsFileInfo *open_file; | 793 | struct cifsFileInfo *open_file; |
794 | 794 | ||
795 | if (file->f_path.dentry == NULL) | ||
796 | return -EBADF; | ||
797 | |||
798 | cifs_sb = CIFS_SB(file->f_path.dentry->d_sb); | 795 | cifs_sb = CIFS_SB(file->f_path.dentry->d_sb); |
799 | if (cifs_sb == NULL) | ||
800 | return -EBADF; | ||
801 | 796 | ||
802 | pTcon = cifs_sb->tcon; | 797 | pTcon = cifs_sb->tcon; |
803 | 798 | ||
@@ -807,14 +802,9 @@ ssize_t cifs_user_write(struct file *file, const char __user *write_data, | |||
807 | 802 | ||
808 | if (file->private_data == NULL) | 803 | if (file->private_data == NULL) |
809 | return -EBADF; | 804 | return -EBADF; |
810 | else | 805 | open_file = (struct cifsFileInfo *) file->private_data; |
811 | open_file = (struct cifsFileInfo *) file->private_data; | ||
812 | 806 | ||
813 | xid = GetXid(); | 807 | xid = GetXid(); |
814 | if (file->f_path.dentry->d_inode == NULL) { | ||
815 | FreeXid(xid); | ||
816 | return -EBADF; | ||
817 | } | ||
818 | 808 | ||
819 | if (*poffset > file->f_path.dentry->d_inode->i_size) | 809 | if (*poffset > file->f_path.dentry->d_inode->i_size) |
820 | long_op = 2; /* writes past end of file can take a long time */ | 810 | long_op = 2; /* writes past end of file can take a long time */ |
@@ -908,12 +898,7 @@ static ssize_t cifs_write(struct file *file, const char *write_data, | |||
908 | int xid, long_op; | 898 | int xid, long_op; |
909 | struct cifsFileInfo *open_file; | 899 | struct cifsFileInfo *open_file; |
910 | 900 | ||
911 | if (file->f_path.dentry == NULL) | ||
912 | return -EBADF; | ||
913 | |||
914 | cifs_sb = CIFS_SB(file->f_path.dentry->d_sb); | 901 | cifs_sb = CIFS_SB(file->f_path.dentry->d_sb); |
915 | if (cifs_sb == NULL) | ||
916 | return -EBADF; | ||
917 | 902 | ||
918 | pTcon = cifs_sb->tcon; | 903 | pTcon = cifs_sb->tcon; |
919 | 904 | ||
@@ -922,14 +907,9 @@ static ssize_t cifs_write(struct file *file, const char *write_data, | |||
922 | 907 | ||
923 | if (file->private_data == NULL) | 908 | if (file->private_data == NULL) |
924 | return -EBADF; | 909 | return -EBADF; |
925 | else | 910 | open_file = (struct cifsFileInfo *)file->private_data; |
926 | open_file = (struct cifsFileInfo *)file->private_data; | ||
927 | 911 | ||
928 | xid = GetXid(); | 912 | xid = GetXid(); |
929 | if (file->f_path.dentry->d_inode == NULL) { | ||
930 | FreeXid(xid); | ||
931 | return -EBADF; | ||
932 | } | ||
933 | 913 | ||
934 | if (*poffset > file->f_path.dentry->d_inode->i_size) | 914 | if (*poffset > file->f_path.dentry->d_inode->i_size) |
935 | long_op = 2; /* writes past end of file can take a long time */ | 915 | long_op = 2; /* writes past end of file can take a long time */ |
@@ -957,11 +937,6 @@ static ssize_t cifs_write(struct file *file, const char *write_data, | |||
957 | return -EBADF; | 937 | return -EBADF; |
958 | } | 938 | } |
959 | if (open_file->invalidHandle) { | 939 | if (open_file->invalidHandle) { |
960 | if ((file->f_path.dentry == NULL) || | ||
961 | (file->f_path.dentry->d_inode == NULL)) { | ||
962 | FreeXid(xid); | ||
963 | return total_written; | ||
964 | } | ||
965 | /* we could deadlock if we called | 940 | /* we could deadlock if we called |
966 | filemap_fdatawait from here so tell | 941 | filemap_fdatawait from here so tell |
967 | reopen_file not to flush data to | 942 | reopen_file not to flush data to |
diff --git a/fs/cifs/readdir.c b/fs/cifs/readdir.c index 2a374d5215a..3fab8ed697d 100644 --- a/fs/cifs/readdir.c +++ b/fs/cifs/readdir.c | |||
@@ -444,9 +444,6 @@ static int initiate_cifs_search(const int xid, struct file *file) | |||
444 | cifsFile->invalidHandle = TRUE; | 444 | cifsFile->invalidHandle = TRUE; |
445 | cifsFile->srch_inf.endOfSearch = FALSE; | 445 | cifsFile->srch_inf.endOfSearch = FALSE; |
446 | 446 | ||
447 | if(file->f_path.dentry == NULL) | ||
448 | return -ENOENT; | ||
449 | |||
450 | cifs_sb = CIFS_SB(file->f_path.dentry->d_sb); | 447 | cifs_sb = CIFS_SB(file->f_path.dentry->d_sb); |
451 | if(cifs_sb == NULL) | 448 | if(cifs_sb == NULL) |
452 | return -EINVAL; | 449 | return -EINVAL; |
@@ -618,20 +615,10 @@ static int cifs_entry_is_dot(char *current_entry, struct cifsFileInfo *cfile) | |||
618 | whether we can use the cached search results from the previous search */ | 615 | whether we can use the cached search results from the previous search */ |
619 | static int is_dir_changed(struct file * file) | 616 | static int is_dir_changed(struct file * file) |
620 | { | 617 | { |
621 | struct inode * inode; | 618 | struct inode *inode = file->f_path.dentry->d_inode; |
622 | struct cifsInodeInfo *cifsInfo; | 619 | struct cifsInodeInfo *cifsInfo = CIFS_I(inode); |
623 | |||
624 | if(file->f_path.dentry == NULL) | ||
625 | return 0; | ||
626 | |||
627 | inode = file->f_path.dentry->d_inode; | ||
628 | |||
629 | if(inode == NULL) | ||
630 | return 0; | ||
631 | |||
632 | cifsInfo = CIFS_I(inode); | ||
633 | 620 | ||
634 | if(cifsInfo->time == 0) | 621 | if (cifsInfo->time == 0) |
635 | return 1; /* directory was changed, perhaps due to unlink */ | 622 | return 1; /* directory was changed, perhaps due to unlink */ |
636 | else | 623 | else |
637 | return 0; | 624 | return 0; |
@@ -851,9 +838,6 @@ static int cifs_filldir(char *pfindEntry, struct file *file, | |||
851 | if((scratch_buf == NULL) || (pfindEntry == NULL) || (pCifsF == NULL)) | 838 | if((scratch_buf == NULL) || (pfindEntry == NULL) || (pCifsF == NULL)) |
852 | return -ENOENT; | 839 | return -ENOENT; |
853 | 840 | ||
854 | if(file->f_path.dentry == NULL) | ||
855 | return -ENOENT; | ||
856 | |||
857 | rc = cifs_entry_is_dot(pfindEntry,pCifsF); | 841 | rc = cifs_entry_is_dot(pfindEntry,pCifsF); |
858 | /* skip . and .. since we added them first */ | 842 | /* skip . and .. since we added them first */ |
859 | if(rc != 0) | 843 | if(rc != 0) |
@@ -997,11 +981,6 @@ int cifs_readdir(struct file *file, void *direntry, filldir_t filldir) | |||
997 | 981 | ||
998 | xid = GetXid(); | 982 | xid = GetXid(); |
999 | 983 | ||
1000 | if(file->f_path.dentry == NULL) { | ||
1001 | FreeXid(xid); | ||
1002 | return -EIO; | ||
1003 | } | ||
1004 | |||
1005 | cifs_sb = CIFS_SB(file->f_path.dentry->d_sb); | 984 | cifs_sb = CIFS_SB(file->f_path.dentry->d_sb); |
1006 | pTcon = cifs_sb->tcon; | 985 | pTcon = cifs_sb->tcon; |
1007 | if(pTcon == NULL) | 986 | if(pTcon == NULL) |