diff options
author | Jeff Layton <jlayton@redhat.com> | 2017-01-12 14:42:41 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2017-01-26 02:24:40 -0500 |
commit | 1f75575aca7be589881cda14344b978b42cbceb5 (patch) | |
tree | 70001aef1c9ad35115cd74a5a2ec08b7f3a20aae /fs | |
parent | a14aeccb65e5dacdd8b47eafc2778b1bfce8978b (diff) |
ceph: fix bad endianness handling in parse_reply_info_extra
commit 6df8c9d80a27cb587f61b4f06b57e248d8bc3f86 upstream.
sparse says:
fs/ceph/mds_client.c:291:23: warning: restricted __le32 degrades to integer
fs/ceph/mds_client.c:293:28: warning: restricted __le32 degrades to integer
fs/ceph/mds_client.c:294:28: warning: restricted __le32 degrades to integer
fs/ceph/mds_client.c:296:28: warning: restricted __le32 degrades to integer
The op value is __le32, so we need to convert it before comparing it.
Signed-off-by: Jeff Layton <jlayton@redhat.com>
Reviewed-by: Sage Weil <sage@redhat.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/ceph/mds_client.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c index 815acd1a56d4..6a26c7bd1286 100644 --- a/fs/ceph/mds_client.c +++ b/fs/ceph/mds_client.c | |||
@@ -288,12 +288,13 @@ static int parse_reply_info_extra(void **p, void *end, | |||
288 | struct ceph_mds_reply_info_parsed *info, | 288 | struct ceph_mds_reply_info_parsed *info, |
289 | u64 features) | 289 | u64 features) |
290 | { | 290 | { |
291 | if (info->head->op == CEPH_MDS_OP_GETFILELOCK) | 291 | u32 op = le32_to_cpu(info->head->op); |
292 | |||
293 | if (op == CEPH_MDS_OP_GETFILELOCK) | ||
292 | return parse_reply_info_filelock(p, end, info, features); | 294 | return parse_reply_info_filelock(p, end, info, features); |
293 | else if (info->head->op == CEPH_MDS_OP_READDIR || | 295 | else if (op == CEPH_MDS_OP_READDIR || op == CEPH_MDS_OP_LSSNAP) |
294 | info->head->op == CEPH_MDS_OP_LSSNAP) | ||
295 | return parse_reply_info_dir(p, end, info, features); | 296 | return parse_reply_info_dir(p, end, info, features); |
296 | else if (info->head->op == CEPH_MDS_OP_CREATE) | 297 | else if (op == CEPH_MDS_OP_CREATE) |
297 | return parse_reply_info_create(p, end, info, features); | 298 | return parse_reply_info_create(p, end, info, features); |
298 | else | 299 | else |
299 | return -EIO; | 300 | return -EIO; |