diff options
Diffstat (limited to 'fs/exec.c')
| -rw-r--r-- | fs/exec.c | 8 |
1 files changed, 4 insertions, 4 deletions
| @@ -112,7 +112,7 @@ asmlinkage long sys_uselib(const char __user * library) | |||
| 112 | goto out; | 112 | goto out; |
| 113 | 113 | ||
| 114 | error = -EINVAL; | 114 | error = -EINVAL; |
| 115 | if (!S_ISREG(nd.dentry->d_inode->i_mode)) | 115 | if (!S_ISREG(nd.path.dentry->d_inode->i_mode)) |
| 116 | goto exit; | 116 | goto exit; |
| 117 | 117 | ||
| 118 | error = vfs_permission(&nd, MAY_READ | MAY_EXEC); | 118 | error = vfs_permission(&nd, MAY_READ | MAY_EXEC); |
| @@ -148,7 +148,7 @@ out: | |||
| 148 | return error; | 148 | return error; |
| 149 | exit: | 149 | exit: |
| 150 | release_open_intent(&nd); | 150 | release_open_intent(&nd); |
| 151 | path_release(&nd); | 151 | path_put(&nd.path); |
| 152 | goto out; | 152 | goto out; |
| 153 | } | 153 | } |
| 154 | 154 | ||
| @@ -652,7 +652,7 @@ struct file *open_exec(const char *name) | |||
| 652 | file = ERR_PTR(err); | 652 | file = ERR_PTR(err); |
| 653 | 653 | ||
| 654 | if (!err) { | 654 | if (!err) { |
| 655 | struct inode *inode = nd.dentry->d_inode; | 655 | struct inode *inode = nd.path.dentry->d_inode; |
| 656 | file = ERR_PTR(-EACCES); | 656 | file = ERR_PTR(-EACCES); |
| 657 | if (S_ISREG(inode->i_mode)) { | 657 | if (S_ISREG(inode->i_mode)) { |
| 658 | int err = vfs_permission(&nd, MAY_EXEC); | 658 | int err = vfs_permission(&nd, MAY_EXEC); |
| @@ -672,7 +672,7 @@ out: | |||
| 672 | } | 672 | } |
| 673 | } | 673 | } |
| 674 | release_open_intent(&nd); | 674 | release_open_intent(&nd); |
| 675 | path_release(&nd); | 675 | path_put(&nd.path); |
| 676 | } | 676 | } |
| 677 | goto out; | 677 | goto out; |
| 678 | } | 678 | } |
