On Mon,  8 Nov 2010 09:47:18 -0600
[email protected] wrote:

> From: Shirish Pargaonkar <[email protected]>
> 
> 
> Modify get/set_cifs_acl* calls to reutrn error code and percolate the
> error code up to the caller.
> 
> 
> Signed-off-by: Shirish Pargaonkar <[email protected]>
> ---
>  fs/cifs/cifsacl.c |   84 ++++++++++++++++++++++++++++++----------------------
>  1 files changed, 48 insertions(+), 36 deletions(-)
> 
> diff --git a/fs/cifs/cifsacl.c b/fs/cifs/cifsacl.c
> index c9b4792..8c260b9 100644
> --- a/fs/cifs/cifsacl.c
> +++ b/fs/cifs/cifsacl.c
> @@ -552,38 +552,40 @@ static int build_sec_desc(struct cifs_ntsd *pntsd, 
> struct cifs_ntsd *pnntsd,
>       return rc;
>  }
>  
> -static struct cifs_ntsd *get_cifs_acl_by_fid(struct cifs_sb_info *cifs_sb,
> -             __u16 fid, u32 *pacllen)
> +static int
> +get_cifs_acl_by_fid(struct cifs_sb_info *cifs_sb,
> +             __u16 fid, u32 *pacllen, struct cifs_ntsd **pntsd)
                ^^^^^^^^^^^
Dealing with pointers to pointers like this is cumbersome and
inefficient. Why not just have it return a struct pointer like before
or a ERR_PTR converted error?

>  {
> -     struct cifs_ntsd *pntsd = NULL;
> -     int xid, rc;
> +     int xid;
> +     int rc = 0;
>       struct tcon_link *tlink = cifs_sb_tlink(cifs_sb);
>  
>       if (IS_ERR(tlink))
> -             return NULL;
> +             PTR_ERR(tlink);
                ^^^^^^^^^^^^^^^
                bug?

>  
>       xid = GetXid();
> -     rc = CIFSSMBGetCIFSACL(xid, tlink_tcon(tlink), fid, &pntsd, pacllen);
> +     rc = CIFSSMBGetCIFSACL(xid, tlink_tcon(tlink), fid, pntsd, pacllen);
>       FreeXid(xid);
>  
>       cifs_put_tlink(tlink);
>  
>       cFYI(1, "GetCIFSACL rc = %d ACL len %d", rc, *pacllen);
> -     return pntsd;
> +     return rc;
>  }
>  
> -static struct cifs_ntsd *get_cifs_acl_by_path(struct cifs_sb_info *cifs_sb,
> -             const char *path, u32 *pacllen)
> +static int
> +get_cifs_acl_by_path(struct cifs_sb_info *cifs_sb, const char *path,
> +                     u32 *pacllen, struct cifs_ntsd **pntsd)
>  {
> -     struct cifs_ntsd *pntsd = NULL;
>       int oplock = 0;
> -     int xid, rc;
> +     int xid;
> +     int rc = 0;
>       __u16 fid;
>       struct cifsTconInfo *tcon;
>       struct tcon_link *tlink = cifs_sb_tlink(cifs_sb);
>  
>       if (IS_ERR(tlink))
> -             return NULL;
> +             return PTR_ERR(tlink);
>  
>       tcon = tlink_tcon(tlink);
>       xid = GetXid();
> @@ -596,32 +598,34 @@ static struct cifs_ntsd *get_cifs_acl_by_path(struct 
> cifs_sb_info *cifs_sb,
>               goto out;
>       }
>  
> -     rc = CIFSSMBGetCIFSACL(xid, tcon, fid, &pntsd, pacllen);
> +     rc = CIFSSMBGetCIFSACL(xid, tcon, fid, pntsd, pacllen);
>       cFYI(1, "GetCIFSACL rc = %d ACL len %d", rc, *pacllen);
>  
>       CIFSSMBClose(xid, tcon, fid);
>   out:
>       cifs_put_tlink(tlink);
>       FreeXid(xid);
> -     return pntsd;
> +     return rc;
>  }
>  
>  /* Retrieve an ACL from the server */
> -static struct cifs_ntsd *get_cifs_acl(struct cifs_sb_info *cifs_sb,
> -                                   struct inode *inode, const char *path,
> -                                   u32 *pacllen)
> +static int
> +get_cifs_acl(struct cifs_sb_info *cifs_sb, struct inode *inode,
> +             const char *path, u32 *pacllen, struct cifs_ntsd **pntsd)
>  {
> -     struct cifs_ntsd *pntsd = NULL;
> +     int rc = 0;
>       struct cifsFileInfo *open_file = NULL;
>  
>       if (inode)
>               open_file = find_readable_file(CIFS_I(inode), true);
        ^^^^^^^^^^
        This predates your patch, but under what conditions would we
        call this function without an inode? If you're cleaning up the
        prototype for this function, then I think there are some
        unneeded arguments here.

-- 
Jeff Layton <[email protected]>
--
To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to