[PATCH] preparation to __user_walk_fd cleanup

Almost all users __user_walk_fd() and friends care only about struct path.
Get rid of the few that do not.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro 256984a8 f419a2e3

+11 -9
+1 -1
fs/inotify_user.c
··· 365 365 if (error) 366 366 return error; 367 367 /* you can only watch an inode if you have read permissions on it */ 368 - error = vfs_permission(nd, MAY_READ); 368 + error = inode_permission(nd->path.dentry->d_inode, MAY_READ); 369 369 if (error) 370 370 path_put(&nd->path); 371 371 return error;
+10 -8
fs/open.c
··· 251 251 if (error) 252 252 goto dput_and_out; 253 253 254 - error = vfs_permission(&nd, MAY_WRITE); 254 + error = inode_permission(inode, MAY_WRITE); 255 255 if (error) 256 256 goto mnt_drop_write_and_out; 257 257 ··· 426 426 asmlinkage long sys_faccessat(int dfd, const char __user *filename, int mode) 427 427 { 428 428 struct nameidata nd; 429 + struct inode *inode; 429 430 int old_fsuid, old_fsgid; 430 431 kernel_cap_t uninitialized_var(old_cap); /* !SECURE_NO_SETUID_FIXUP */ 431 432 int res; ··· 462 461 if (res) 463 462 goto out; 464 463 465 - if ((mode & MAY_EXEC) && S_ISREG(nd.path.dentry->d_inode->i_mode)) { 464 + inode = nd.path.dentry->d_inode; 465 + 466 + if ((mode & MAY_EXEC) && S_ISREG(inode->i_mode)) { 466 467 /* 467 468 * MAY_EXEC on regular files is denied if the fs is mounted 468 469 * with the "noexec" flag. ··· 474 471 goto out_path_release; 475 472 } 476 473 477 - res = vfs_permission(&nd, mode | MAY_ACCESS); 474 + res = inode_permission(inode, mode | MAY_ACCESS); 478 475 /* SuS v2 requires we report a read only fs too */ 479 - if(res || !(mode & S_IWOTH) || 480 - special_file(nd.path.dentry->d_inode->i_mode)) 476 + if (res || !(mode & S_IWOTH) || special_file(inode->i_mode)) 481 477 goto out_path_release; 482 478 /* 483 479 * This is a rare case where using __mnt_is_readonly() ··· 517 515 if (error) 518 516 goto out; 519 517 520 - error = vfs_permission(&nd, MAY_EXEC | MAY_ACCESS); 518 + error = inode_permission(nd.path.dentry->d_inode, MAY_EXEC | MAY_ACCESS); 521 519 if (error) 522 520 goto dput_and_out; 523 521 ··· 546 544 if (!S_ISDIR(inode->i_mode)) 547 545 goto out_putf; 548 546 549 - error = file_permission(file, MAY_EXEC | MAY_ACCESS); 547 + error = inode_permission(inode, MAY_EXEC | MAY_ACCESS); 550 548 if (!error) 551 549 set_fs_pwd(current->fs, &file->f_path); 552 550 out_putf: ··· 564 562 if (error) 565 563 goto out; 566 564 567 - error = vfs_permission(&nd, MAY_EXEC | MAY_ACCESS); 565 + error = inode_permission(nd.path.dentry->d_inode, MAY_EXEC | MAY_ACCESS); 568 566 if (error) 569 567 goto dput_and_out; 570 568