SYSCALL_DEFINE2(newfstat, unsigned int, fd, struct stat __user *, statbuf) { struct kstat stat; int error = vfs_fstat(fd, &stat); if (!error) error = cp_new_stat(&stat, statbuf); return error; }
SYSCALL_DEFINE2(newstat, const char __user *, filename, struct stat __user *, statbuf) { struct kstat stat; int error = vfs_stat(filename, &stat); if (error) return error; return cp_new_stat(&stat, statbuf); }
asmlinkage long sys_newfstat(unsigned int fd, struct stat __user *statbuf) { struct kstat stat; int error = vfs_fstat(fd, &stat); if (!error) error = cp_new_stat(&stat, statbuf); return error; }
asmlinkage long sys_newlstat(char __user *filename, struct stat __user *statbuf) { struct kstat stat; int error = vfs_lstat_fd(AT_FDCWD, filename, &stat); if (!error) error = cp_new_stat(&stat, statbuf); return error; }
SYSCALL_DEFINE4(newfstatat, int, dfd, const char __user *, filename, struct stat __user *, statbuf, int, flag) { struct kstat stat; int error; error = vfs_fstatat(dfd, filename, &stat, flag); if (error) return error; return cp_new_stat(&stat, statbuf); }
int sys_newstat(char * filename, struct new_stat * statbuf) { struct inode * inode; int error; error = namei(filename,&inode); if (error) return error; cp_new_stat(inode,statbuf); iput(inode); return 0; }
asmlinkage long sys_newlstat(char * filename, struct stat * statbuf) { struct nameidata nd; int error; error = user_path_walk_link(filename, &nd); if (!error) { error = do_revalidate(nd.dentry); if (!error) error = cp_new_stat(nd.dentry->d_inode, statbuf); path_release(&nd); } return error; }
asmlinkage int sys_newfstat(unsigned int fd, struct new_stat * statbuf) { struct file * f; struct inode * inode; int error; error = verify_area(VERIFY_WRITE,statbuf,sizeof (*statbuf)); if (error) return error; if (fd >= NR_OPEN || !(f=current->files->fd[fd]) || !(inode=f->f_inode)) return -EBADF; cp_new_stat(inode,statbuf); return 0; }
asmlinkage int sys_newlstat(char * filename, struct new_stat * statbuf) { struct inode * inode; int error; error = verify_area(VERIFY_WRITE,statbuf,sizeof (*statbuf)); if (error) return error; error = lnamei(filename,&inode); if (error) return error; cp_new_stat(inode,statbuf); iput(inode); return 0; }
asmlinkage long sys_newfstat(unsigned int fd, struct stat * statbuf) { struct file * f; int err = -EBADF; f = fget(fd); if (f) { struct dentry * dentry = f->f_dentry; err = do_revalidate(dentry); if (!err) err = cp_new_stat(dentry->d_inode, statbuf); fput(f); } return err; }
asmlinkage long sys_newfstatat(int dfd, char __user *filename, struct stat __user *statbuf, int flag) { struct kstat stat; int error = -EINVAL; if ((flag & ~AT_SYMLINK_NOFOLLOW) != 0) goto out; if (flag & AT_SYMLINK_NOFOLLOW) error = vfs_lstat_fd(dfd, filename, &stat); else error = vfs_stat_fd(dfd, filename, &stat); if (!error) error = cp_new_stat(&stat, statbuf); out: return error; }
SYSCALL_DEFINE4(newfstatat, int, dfd, char __user *, filename, struct stat __user *, statbuf, int, flag) { struct kstat stat; int error = -EINVAL; if ((flag & ~AT_SYMLINK_NOFOLLOW) != 0) goto out; if (flag & AT_SYMLINK_NOFOLLOW) error = vfs_lstat_fd(dfd, filename, &stat); else error = vfs_stat_fd(dfd, filename, &stat); if (!error) error = cp_new_stat(&stat, statbuf); out: return error; }
asmlinkage long sys_newstat(char * filename, struct stat * statbuf) { struct nameidata nd; int error, errcnt = 0; again: error = user_path_walk(filename, &nd); if (!error) { error = do_revalidate(nd.dentry); if (!error) error = cp_new_stat(nd.dentry->d_inode, statbuf); path_release(&nd); } if (error == -ESTALE && !errcnt) { errcnt++; goto again; } return error; }