Reviewed-by: Sage Weil <sage@xxxxxxxxxxx> On Tue, 2 Apr 2013, Alex Elder wrote: > The osd client mutex is acquired just before getting a reference to > a request in handle_reply(). However the error paths after that > don't drop the mutex before returning as they should. > > Drop the mutex after dropping the request reference. Also add a > bad_mutex label at that point and use it so the failed request > lookup case can be handled with the rest. > > This resolves: > http://tracker.ceph.com/issues/4615 > > Signed-off-by: Alex Elder <elder@xxxxxxxxxxx> > --- > net/ceph/osd_client.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c > index 9b69f47..abbcde3 100644 > --- a/net/ceph/osd_client.c > +++ b/net/ceph/osd_client.c > @@ -1332,8 +1332,7 @@ static void handle_reply(struct ceph_osd_client > *osdc, struct ceph_msg *msg, > req = __lookup_request(osdc, tid); > if (req == NULL) { > dout("handle_reply tid %llu dne\n", tid); > - mutex_unlock(&osdc->request_mutex); > - return; > + goto bad_mutex; > } > ceph_osdc_get_request(req); > > @@ -1422,6 +1421,8 @@ done: > > bad_put: > ceph_osdc_put_request(req); > +bad_mutex: > + mutex_unlock(&osdc->request_mutex); > bad: > pr_err("corrupt osd_op_reply got %d %d\n", > (int)msg->front.iov_len, le32_to_cpu(msg->hdr.front_len)); > -- > 1.7.9.5 > > -- > To unsubscribe from this list: send the line "unsubscribe ceph-devel" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > > -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html