aboutsummaryrefslogtreecommitdiffstats
path: root/net/ceph/osd_client.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ceph/osd_client.c')
-rw-r--r--net/ceph/osd_client.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c
index f8f235930d88..3534e12683d3 100644
--- a/net/ceph/osd_client.c
+++ b/net/ceph/osd_client.c
@@ -1770,6 +1770,7 @@ static void handle_reply(struct ceph_osd_client *osdc, struct ceph_msg *msg)
1770 u32 osdmap_epoch; 1770 u32 osdmap_epoch;
1771 int already_completed; 1771 int already_completed;
1772 u32 bytes; 1772 u32 bytes;
1773 u8 decode_redir;
1773 unsigned int i; 1774 unsigned int i;
1774 1775
1775 tid = le64_to_cpu(msg->hdr.tid); 1776 tid = le64_to_cpu(msg->hdr.tid);
@@ -1841,6 +1842,15 @@ static void handle_reply(struct ceph_osd_client *osdc, struct ceph_msg *msg)
1841 p += 8 + 4; /* skip replay_version */ 1842 p += 8 + 4; /* skip replay_version */
1842 p += 8; /* skip user_version */ 1843 p += 8; /* skip user_version */
1843 1844
1845 if (le16_to_cpu(msg->hdr.version) >= 7)
1846 ceph_decode_8_safe(&p, end, decode_redir, bad_put);
1847 else
1848 decode_redir = 1;
1849 } else {
1850 decode_redir = 0;
1851 }
1852
1853 if (decode_redir) {
1844 err = ceph_redirect_decode(&p, end, &redir); 1854 err = ceph_redirect_decode(&p, end, &redir);
1845 if (err) 1855 if (err)
1846 goto bad_put; 1856 goto bad_put;