ceph: avoid null deref in osd request error path
If we interrupt an osd request, we call __cancel_request, but it wasn't verifying that req->r_osd was non-NULL before dereferencing it. This could cause a crash if osds were flapping and we aborted a request on said osd. Reported-by: Henry C Chang <henry_c_chang@tcloudcomputing.com> Signed-off-by: Sage Weil <sage@newdream.net>
This commit is contained in:
Родитель
936aeb5c4a
Коммит
6bc18876ba
|
@ -549,7 +549,7 @@ static void __unregister_request(struct ceph_osd_client *osdc,
|
|||
*/
|
||||
static void __cancel_request(struct ceph_osd_request *req)
|
||||
{
|
||||
if (req->r_sent) {
|
||||
if (req->r_sent && req->r_osd) {
|
||||
ceph_con_revoke(&req->r_osd->o_con, req->r_request);
|
||||
req->r_sent = 0;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче