On May 4, 2014, at 7:03 AM, Christoph Hellwig <[email protected]> wrote:

> Various filesystems don't bother checking for a NULL ACL in
> posix_acl_equiv_mode, and thus can dereference a NULL pointer when it
> gets passed one. This usually happens from the NFS server, as the ACL tools
> never pass a NULL ACL, but instead of one representing the mode bits.
> 
> Instead of adding boilerplat to all filesystems put this check into one place,
> which will allow us to remove the check from other filesystems as well later
> on.
> 
> Signed-off-by: Christoph Hellwig <[email protected]>
> Reported-by: Ben Greear <[email protected]>
> Reported-by: Marco Munderloh <[email protected]>,
> Cc: Chuck Lever <[email protected]>

Good clean-up.

Reviewed-by: Chuck Lever <[email protected]>


> Cc: [email protected]
> ---
> fs/posix_acl.c |    6 ++++++
> 1 file changed, 6 insertions(+)
> 
> diff --git a/fs/posix_acl.c b/fs/posix_acl.c
> index 9e363e4..0855f77 100644
> --- a/fs/posix_acl.c
> +++ b/fs/posix_acl.c
> @@ -246,6 +246,12 @@ posix_acl_equiv_mode(const struct posix_acl *acl, 
> umode_t *mode_p)
>       umode_t mode = 0;
>       int not_equiv = 0;
> 
> +     /*
> +      * A null ACL can always be presented as mode bits.
> +      */
> +     if (!acl)
> +             return 0;
> +
>       FOREACH_ACL_ENTRY(pa, acl, pe) {
>               switch (pa->e_tag) {
>                       case ACL_USER_OBJ:
> -- 
> 1.7.10.4
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
> the body of a message to [email protected]
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

--
Chuck Lever
chuck[dot]lever[at]oracle[dot]com



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

Reply via email to