[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20180905222005.GS19965@ZenIV.linux.org.uk>
Date: Wed, 5 Sep 2018 23:20:05 +0100
From: Al Viro <viro@...IV.linux.org.uk>
To: David Howells <dhowells@...hat.com>
Cc: linux-api@...r.kernel.org, linux-kbuild@...r.kernel.org,
Ryusuke Konishi <konishi.ryusuke@....ntt.co.jp>,
linux-nilfs@...r.kernel.org, linux-fsdevel@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH 07/11] UAPI: nilfs2: Fix use of undefined byteswapping
functions
On Wed, Sep 05, 2018 at 04:55:23PM +0100, David Howells wrote:
> nilfs_checkpoint_set_##name(struct nilfs_checkpoint *cp) \
> { \
> - cp->cp_flags = cpu_to_le32(le32_to_cpu(cp->cp_flags) | \
> + cp->cp_flags = __cpu_to_le32(__le32_to_cpu(cp->cp_flags) | \
> (1UL << NILFS_CHECKPOINT_##flag)); \
How about sanitiziung the damn thing to
cp->cp_flags |= __cpu_to_le32(1UL << NILFS_CHECKPOINT_##flag));
while you are at it? Or, perhaps, even
#define NILFS2_CP_FLAG(flag) __cpu_to_le32(1UL << NILFS_CHECKPOINT_##flag)
and cp->cp_flags |= NILFS2_CP_FLAG(flag) for this one,
> } \
> static inline void \
> nilfs_checkpoint_clear_##name(struct nilfs_checkpoint *cp) \
> { \
> - cp->cp_flags = cpu_to_le32(le32_to_cpu(cp->cp_flags) & \
> + cp->cp_flags = __cpu_to_le32(__le32_to_cpu(cp->cp_flags) & \
> ~(1UL << NILFS_CHECKPOINT_##flag)); \
cp->cp_flags &= ~NILFS2_CP_FLAG(flag);
here
> } \
> static inline int \
> nilfs_checkpoint_##name(const struct nilfs_checkpoint *cp) \
> { \
> - return !!(le32_to_cpu(cp->cp_flags) & \
> + return !!(__le32_to_cpu(cp->cp_flags) & \
> (1UL << NILFS_CHECKPOINT_##flag)); \
and !!(cp->cp_flags & NILFS2_CP_FLAG(flag)
here? Or maybe even make the damn thing bool and lose the !! here...
)> }
>
and similar for those:
> @@ -595,20 +596,20 @@ enum {
> static inline void \
> nilfs_segment_usage_set_##name(struct nilfs_segment_usage *su) \
> { \
> - su->su_flags = cpu_to_le32(le32_to_cpu(su->su_flags) | \
> + su->su_flags = __cpu_to_le32(__le32_to_cpu(su->su_flags) | \
> (1UL << NILFS_SEGMENT_USAGE_##flag));\
> } \
> static inline void \
> nilfs_segment_usage_clear_##name(struct nilfs_segment_usage *su) \
> { \
> su->su_flags = \
> - cpu_to_le32(le32_to_cpu(su->su_flags) & \
> + __cpu_to_le32(__le32_to_cpu(su->su_flags) & \
> ~(1UL << NILFS_SEGMENT_USAGE_##flag)); \
> } \
> static inline int \
> nilfs_segment_usage_##name(const struct nilfs_segment_usage *su) \
> { \
> - return !!(le32_to_cpu(su->su_flags) & \
> + return !!(__le32_to_cpu(su->su_flags) & \
> (1UL << NILFS_SEGMENT_USAGE_##flag)); \
> }
> @@ -619,15 +620,15 @@ NILFS_SEGMENT_USAGE_FNS(ERROR, error)
> static inline void
> nilfs_segment_usage_set_clean(struct nilfs_segment_usage *su)
> {
> - su->su_lastmod = cpu_to_le64(0);
> - su->su_nblocks = cpu_to_le32(0);
> - su->su_flags = cpu_to_le32(0);
> + su->su_lastmod = __cpu_to_le64(0);
> + su->su_nblocks = __cpu_to_le32(0);
> + su->su_flags = __cpu_to_le32(0);
> }
>
> static inline int
> nilfs_segment_usage_clean(const struct nilfs_segment_usage *su)
> {
> - return !le32_to_cpu(su->su_flags);
> + return !__le32_to_cpu(su->su_flags);
"Check that after byteswap it becomes 0", is it? How is that different
from return !su->su_flags; ?
Powered by blists - more mailing lists