lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Mon, 24 Sep 2018 15:17:23 -0700
From:   Nick Desaulniers <ndesaulniers@...gle.com>
To:     Nathan Chancellor <natechancellor@...il.com>
Cc:     dhowells@...hat.com, linux-cachefs@...hat.com,
        LKML <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH] cachefiles: Explicitly cast enumerated type in put_object

On Mon, Sep 24, 2018 at 10:33 AM Nathan Chancellor
<natechancellor@...il.com> wrote:
>
> Clang warns when one enumerated type is implicitly converted to another.
>
> fs/cachefiles/namei.c:247:50: warning: implicit conversion from
> enumeration type 'enum cachefiles_obj_ref_trace' to different
> enumeration type 'enum fscache_obj_ref_trace' [-Wenum-conversion]
>         cache->cache.ops->put_object(&xobject->fscache,
> cachefiles_obj_put_wait_retry);

That's an interesting pattern; cachefiles_obj_ref_trace's first
enumeration's value is set to the final enumeration's value in
fscache_obj_ref_trace.  This fix is ok to me; though I would ask the
maintainer consider just merging the enums into one (unless there are
more than one other enums doing the same pattern (which doesn't seem
to be the case)).  Thanks for the patch.
Reviewed-by: Nick Desaulniers <ndesaulniers@...gle.com>

>
> Silence this warning by explicitly casting to fscache_obj_ref_trace,
> which is also done in put_object.
>
> Reported-by: Nick Desaulniers <ndesaulniers@...gle.com>
> Signed-off-by: Nathan Chancellor <natechancellor@...il.com>
> ---
>  fs/cachefiles/namei.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/fs/cachefiles/namei.c b/fs/cachefiles/namei.c
> index af2b17b21b94..15e5988a83de 100644
> --- a/fs/cachefiles/namei.c
> +++ b/fs/cachefiles/namei.c
> @@ -244,11 +244,13 @@ static int cachefiles_mark_object_active(struct cachefiles_cache *cache,
>
>         ASSERT(!test_bit(CACHEFILES_OBJECT_ACTIVE, &xobject->flags));
>
> -       cache->cache.ops->put_object(&xobject->fscache, cachefiles_obj_put_wait_retry);
> +       cache->cache.ops->put_object(&xobject->fscache,
> +               (enum fscache_obj_ref_trace)cachefiles_obj_put_wait_retry);
>         goto try_again;
>
>  requeue:
> -       cache->cache.ops->put_object(&xobject->fscache, cachefiles_obj_put_wait_timeo);
> +       cache->cache.ops->put_object(&xobject->fscache,
> +               (enum fscache_obj_ref_trace)cachefiles_obj_put_wait_timeo);
>         _leave(" = -ETIMEDOUT");
>         return -ETIMEDOUT;
>  }
> --
> 2.19.0
>


-- 
Thanks,
~Nick Desaulniers

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ