Re: [patch] skip posix open if nameidata is null

Jeff Layton <[email protected]>
Newsgroups gmane.linux.file-systems.cifs
Message-ID <[email protected]>
On Fri,  2 Apr 2010 12:32:58 -0500
[email protected] wrote:

> While creating a file on a server which supports unix extensions
> such as Samba, if a file is being created which does not supply
> nameidata (i.e. nd is null), cifs client can oops when calling
> cifs_posix_open.
> 
> The simplest solution is, do not open a file using posix semantics
> if nameidata parameter is NULL even if server supports posix semantics.
> 
> I do not see a way to reach vfsmount (structure) field if nameidata
> is not supplied to call posix open (cifs_posix_open).
> 
> 
> Signed-off-by: Shirish Pargaonkar <[email protected]>
> Reported-by: Eugene Teo <[email protected]>
> ---
> 
> diff --git a/fs/cifs/dir.c b/fs/cifs/dir.c
> index e9f7ecc..eef8d83 100644
> --- a/fs/cifs/dir.c
> +++ b/fs/cifs/dir.c
> @@ -317,7 +317,7 @@ cifs_create(struct inode *inode, struct dentry *direntry, int mode,
>  	else
>  		oflags = FMODE_READ;
>  
> -	if (tcon->unix_ext && (tcon->ses->capabilities & CAP_UNIX) &&
> +	if (nd && tcon->unix_ext && (tcon->ses->capabilities & CAP_UNIX) &&
>  	    (CIFS_UNIX_POSIX_PATH_OPS_CAP &
>  			le64_to_cpu(tcon->fsUnixInfo.Capability))) {
>  		rc = cifs_posix_open(full_path, &newinode, nd->path.mnt,

There's nothing inherently special about posix opens that prevents them
from working when nd is NULL. Instead of doing this, it would probably
be preferable to have posix opens do what "regular" opens do when nd is
NULL -- close the file before returning from cifs_create.

-- 
Jeff Layton <[email protected]>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.