From: Greg Kroah-Hartman Date: Wed, 31 Oct 2012 21:46:53 +0000 (-0700) Subject: remove 3.0 celf patches X-Git-Tag: v3.0.51~10 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=76020111ba932df93689b1835b3c86aab80b335a;p=thirdparty%2Fkernel%2Fstable-queue.git remove 3.0 celf patches --- diff --git a/queue-3.0/ceph-fix-oops-when-handling-mdsmap-that-decreases-max_mds.patch b/queue-3.0/ceph-fix-oops-when-handling-mdsmap-that-decreases-max_mds.patch deleted file mode 100644 index d32361dbe69..00000000000 --- a/queue-3.0/ceph-fix-oops-when-handling-mdsmap-that-decreases-max_mds.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 3e8f43a089f06279c5f76a9ccd42578eebf7bfa5 Mon Sep 17 00:00:00 2001 -From: "Yan, Zheng" -Date: Thu, 20 Sep 2012 17:42:25 +0800 -Subject: ceph: Fix oops when handling mdsmap that decreases max_mds - -From: "Yan, Zheng" - -commit 3e8f43a089f06279c5f76a9ccd42578eebf7bfa5 upstream. - -When i >= newmap->m_max_mds, ceph_mdsmap_get_addr(newmap, i) return -NULL. Passing NULL to memcmp() triggers oops. - -Signed-off-by: Yan, Zheng -Signed-off-by: Sage Weil -Signed-off-by: Greg Kroah-Hartman - ---- - fs/ceph/mds_client.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - ---- a/fs/ceph/mds_client.c -+++ b/fs/ceph/mds_client.c -@@ -2621,7 +2621,8 @@ static void check_new_map(struct ceph_md - ceph_mdsmap_is_laggy(newmap, i) ? " (laggy)" : "", - session_state_name(s->s_state)); - -- if (memcmp(ceph_mdsmap_get_addr(oldmap, i), -+ if (i >= newmap->m_max_mds || -+ memcmp(ceph_mdsmap_get_addr(oldmap, i), - ceph_mdsmap_get_addr(newmap, i), - sizeof(struct ceph_entity_addr))) { - if (s->s_state == CEPH_MDS_SESSION_OPENING) { diff --git a/queue-3.0/libceph-check-for-invalid-mapping.patch b/queue-3.0/libceph-check-for-invalid-mapping.patch deleted file mode 100644 index 4410e3b86a3..00000000000 --- a/queue-3.0/libceph-check-for-invalid-mapping.patch +++ /dev/null @@ -1,166 +0,0 @@ -From d63b77f4c552cc3a20506871046ab0fcbc332609 Mon Sep 17 00:00:00 2001 -From: Sage Weil -Date: Mon, 24 Sep 2012 20:59:48 -0700 -Subject: libceph: check for invalid mapping - -From: Sage Weil - -commit d63b77f4c552cc3a20506871046ab0fcbc332609 upstream. - -If we encounter an invalid (e.g., zeroed) mapping, return an error -and avoid a divide by zero. - -Signed-off-by: Sage Weil -Reviewed-by: Alex Elder -Signed-off-by: Greg Kroah-Hartman - ---- - include/linux/ceph/osd_client.h | 2 +- - include/linux/ceph/osdmap.h | 6 +++--- - net/ceph/osd_client.c | 32 ++++++++++++++++++++------------ - net/ceph/osdmap.c | 18 ++++++++++++++++-- - 4 files changed, 40 insertions(+), 18 deletions(-) - ---- a/include/linux/ceph/osd_client.h -+++ b/include/linux/ceph/osd_client.h -@@ -202,7 +202,7 @@ extern void ceph_osdc_handle_reply(struc - extern void ceph_osdc_handle_map(struct ceph_osd_client *osdc, - struct ceph_msg *msg); - --extern void ceph_calc_raw_layout(struct ceph_osd_client *osdc, -+extern int ceph_calc_raw_layout(struct ceph_osd_client *osdc, - struct ceph_file_layout *layout, - u64 snapid, - u64 off, u64 *plen, u64 *bno, ---- a/include/linux/ceph/osdmap.h -+++ b/include/linux/ceph/osdmap.h -@@ -111,9 +111,9 @@ extern struct ceph_osdmap *osdmap_apply_ - extern void ceph_osdmap_destroy(struct ceph_osdmap *map); - - /* calculate mapping of a file extent to an object */ --extern void ceph_calc_file_object_mapping(struct ceph_file_layout *layout, -- u64 off, u64 *plen, -- u64 *bno, u64 *oxoff, u64 *oxlen); -+extern int ceph_calc_file_object_mapping(struct ceph_file_layout *layout, -+ u64 off, u64 *plen, -+ u64 *bno, u64 *oxoff, u64 *oxlen); - - /* calculate mapping of object to a placement group */ - extern int ceph_calc_object_layout(struct ceph_object_layout *ol, ---- a/net/ceph/osd_client.c -+++ b/net/ceph/osd_client.c -@@ -52,7 +52,7 @@ static int op_has_extent(int op) - op == CEPH_OSD_OP_WRITE); - } - --void ceph_calc_raw_layout(struct ceph_osd_client *osdc, -+int ceph_calc_raw_layout(struct ceph_osd_client *osdc, - struct ceph_file_layout *layout, - u64 snapid, - u64 off, u64 *plen, u64 *bno, -@@ -62,12 +62,15 @@ void ceph_calc_raw_layout(struct ceph_os - struct ceph_osd_request_head *reqhead = req->r_request->front.iov_base; - u64 orig_len = *plen; - u64 objoff, objlen; /* extent in object */ -+ int r; - - reqhead->snapid = cpu_to_le64(snapid); - - /* object extent? */ -- ceph_calc_file_object_mapping(layout, off, plen, bno, -- &objoff, &objlen); -+ r = ceph_calc_file_object_mapping(layout, off, plen, bno, -+ &objoff, &objlen); -+ if (r < 0) -+ return r; - if (*plen < orig_len) - dout(" skipping last %llu, final file extent %llu~%llu\n", - orig_len - *plen, off, *plen); -@@ -83,7 +86,7 @@ void ceph_calc_raw_layout(struct ceph_os - - dout("calc_layout bno=%llx %llu~%llu (%d pages)\n", - *bno, objoff, objlen, req->r_num_pages); -- -+ return 0; - } - EXPORT_SYMBOL(ceph_calc_raw_layout); - -@@ -112,20 +115,25 @@ EXPORT_SYMBOL(ceph_calc_raw_layout); - * - * fill osd op in request message. - */ --static void calc_layout(struct ceph_osd_client *osdc, -- struct ceph_vino vino, -- struct ceph_file_layout *layout, -- u64 off, u64 *plen, -- struct ceph_osd_request *req, -- struct ceph_osd_req_op *op) -+static int calc_layout(struct ceph_osd_client *osdc, -+ struct ceph_vino vino, -+ struct ceph_file_layout *layout, -+ u64 off, u64 *plen, -+ struct ceph_osd_request *req, -+ struct ceph_osd_req_op *op) - { - u64 bno; -+ int r; - -- ceph_calc_raw_layout(osdc, layout, vino.snap, off, -- plen, &bno, req, op); -+ r = ceph_calc_raw_layout(osdc, layout, vino.snap, off, -+ plen, &bno, req, op); -+ if (r < 0) -+ return r; - - snprintf(req->r_oid, sizeof(req->r_oid), "%llx.%08llx", vino.ino, bno); - req->r_oid_len = strlen(req->r_oid); -+ -+ return r; - } - - /* ---- a/net/ceph/osdmap.c -+++ b/net/ceph/osdmap.c -@@ -941,7 +941,7 @@ bad: - * for now, we write only a single su, until we can - * pass a stride back to the caller. - */ --void ceph_calc_file_object_mapping(struct ceph_file_layout *layout, -+int ceph_calc_file_object_mapping(struct ceph_file_layout *layout, - u64 off, u64 *plen, - u64 *ono, - u64 *oxoff, u64 *oxlen) -@@ -955,11 +955,17 @@ void ceph_calc_file_object_mapping(struc - - dout("mapping %llu~%llu osize %u fl_su %u\n", off, *plen, - osize, su); -+ if (su == 0 || sc == 0) -+ goto invalid; - su_per_object = osize / su; -+ if (su_per_object == 0) -+ goto invalid; - dout("osize %u / su %u = su_per_object %u\n", osize, su, - su_per_object); - -- BUG_ON((su & ~PAGE_MASK) != 0); -+ if ((su & ~PAGE_MASK) != 0) -+ goto invalid; -+ - /* bl = *off / su; */ - t = off; - do_div(t, su); -@@ -987,6 +993,14 @@ void ceph_calc_file_object_mapping(struc - *plen = *oxlen; - - dout(" obj extent %llu~%llu\n", *oxoff, *oxlen); -+ return 0; -+ -+invalid: -+ dout(" invalid layout\n"); -+ *ono = 0; -+ *oxoff = 0; -+ *oxlen = 0; -+ return -EINVAL; - } - EXPORT_SYMBOL(ceph_calc_file_object_mapping); - diff --git a/queue-3.0/series b/queue-3.0/series index b4f3abe872f..03c0890b13e 100644 --- a/queue-3.0/series +++ b/queue-3.0/series @@ -1,4 +1,2 @@ floppy-do-put_disk-on-current-dr-if-blk_init_queue-fails.patch x86-remove-the-ancient-and-deprecated-disable_hlt-and-enable_hlt-facility.patch -ceph-fix-oops-when-handling-mdsmap-that-decreases-max_mds.patch -libceph-check-for-invalid-mapping.patch