···392392 rc = 0;393393 d_add(direntry, NULL);394394 } else {395395- cERROR(1,("Error 0x%x or on cifs_get_inode_info in lookup",rc));395395+ cERROR(1,("Error 0x%x on cifs_get_inode_info in lookup of %s",396396+ rc,full_path));396397 /* BB special case check for Access Denied - watch security 397398 exposure of returning dir info implicitly via different rc 398399 if file exists or not but no access BB */
+15-9
fs/cifs/inode.c
···422422 cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR);423423424424 if (!rc) {425425- direntry->d_inode->i_nlink--;425425+ if(direntry->d_inode)426426+ direntry->d_inode->i_nlink--;426427 } else if (rc == -ENOENT) {427428 d_drop(direntry);428429 } else if (rc == -ETXTBSY) {···441440 cifs_sb->mnt_cifs_flags & 442441 CIFS_MOUNT_MAP_SPECIAL_CHR);443442 CIFSSMBClose(xid, pTcon, netfid);444444- direntry->d_inode->i_nlink--;443443+ if(direntry->d_inode)444444+ direntry->d_inode->i_nlink--;445445 }446446 } else if (rc == -EACCES) {447447 /* try only if r/o attribute set in local lookup data? */···496494 cifs_sb->mnt_cifs_flags & 497495 CIFS_MOUNT_MAP_SPECIAL_CHR);498496 if (!rc) {499499- direntry->d_inode->i_nlink--;497497+ if(direntry->d_inode)498498+ direntry->d_inode->i_nlink--;500499 } else if (rc == -ETXTBSY) {501500 int oplock = FALSE;502501 __u16 netfid;···517514 cifs_sb->mnt_cifs_flags &518515 CIFS_MOUNT_MAP_SPECIAL_CHR);519516 CIFSSMBClose(xid, pTcon, netfid);520520- direntry->d_inode->i_nlink--;517517+ if(direntry->d_inode)518518+ direntry->d_inode->i_nlink--;521519 }522520 /* BB if rc = -ETXTBUSY goto the rename logic BB */523521 }524522 }525523 }526526- cifsInode = CIFS_I(direntry->d_inode);527527- cifsInode->time = 0; /* will force revalidate to get info when528528- needed */529529- direntry->d_inode->i_ctime = inode->i_ctime = inode->i_mtime =530530- current_fs_time(inode->i_sb);524524+ if(direntry->d_inode) {525525+ cifsInode = CIFS_I(direntry->d_inode);526526+ cifsInode->time = 0; /* will force revalidate to get info527527+ when needed */528528+ direntry->d_inode->i_ctime = current_fs_time(inode->i_sb);529529+ }530530+ inode->i_ctime = inode->i_mtime = current_fs_time(inode->i_sb);531531 cifsInode = CIFS_I(inode);532532 cifsInode->time = 0; /* force revalidate of dir as well */533533