Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9b20d7fc authored by Al Viro's avatar Al Viro
Browse files

mqueue: clean prepare_open() up



Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 066cc813
Loading
Loading
Loading
Loading
+11 −18
Original line number Diff line number Diff line
@@ -721,26 +721,19 @@ static int prepare_open(struct dentry *dentry, int oflag, int ro,
						  MAY_READ | MAY_WRITE };
	int acc;

	if (oflag & O_CREAT) {
		if (d_really_is_positive(dentry)) {	/* entry already exists */
			audit_inode(name, dentry, 0);
			if (oflag & O_EXCL)
				return -EEXIST;
		} else {
	if (d_really_is_negative(dentry)) {
		if (!(oflag & O_CREAT))
			return -ENOENT;
		if (ro)
			return ro;

		audit_inode_parent_hidden(name, dentry->d_parent);
		return vfs_mkobj(dentry, mode & ~current_umask(),
				  mqueue_create_attr, attr);
	}
	} else {
		if (d_really_is_negative(dentry)) {
			return -ENOENT;
		} else {
	/* it already existed */
	audit_inode(name, dentry, 0);
		}
	}
	if ((oflag & (O_CREAT|O_EXCL)) == (O_CREAT|O_EXCL))
		return -EEXIST;
	if ((oflag & O_ACCMODE) == (O_RDWR | O_WRONLY))
		return -EINVAL;
	acc = oflag2acc[oflag & O_ACCMODE];