staging/lustre/mdc: Initialize req in mdc_enqueue for !it case
authorOleg Drokin <green@linuxhacker.ru>
Mon, 2 Feb 2015 02:52:19 +0000 (21:52 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 7 Feb 2015 09:32:34 +0000 (17:32 +0800)
Commit ab909585b813 ("staging: lustre: Cleanup variable declarations
in mdc_enqueue()") broke Lustre flock handling introducing access
to uninitialized req variable, leading to bizzare crash in a later
call to __req_capsule_offset with invalid pill value.

Set req to NULL just for this case as in all other cases req is
explicitly initialized with request packing call.

Signed-off-by: Oleg Drokin <green@linuxhacker.ru>
CC: Srikrishan Malik <srikrishanmalik@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/lustre/lustre/mdc/mdc_locks.c

index 8c9b4f5494e9e09d4b9ac6ac3c8de0b45bd4bc78..d1c224ecd2b78c150e95251bce3e4c75d3d01229 100644 (file)
@@ -828,6 +828,7 @@ resend:
                         einfo->ei_type);
                policy = (ldlm_policy_data_t *)lmm;
                res_id.name[3] = LDLM_FLOCK;
+               req = NULL;
        } else if (it->it_op & IT_OPEN) {
                req = mdc_intent_open_pack(exp, it, op_data, lmm, lmmsize,
                                           einfo->ei_cbdata);