[SCSI] bnx2i: Fixed kernel panic due to illegal usage of sc->request->cpu
[pandora-kernel.git] / drivers / scsi / bnx2i / bnx2i_hwi.c
index 54978c1..28c6693 100644 (file)
@@ -1901,6 +1901,7 @@ static int bnx2i_queue_scsi_cmd_resp(struct iscsi_session *session,
        struct iscsi_task *task;
        struct scsi_cmnd *sc;
        int rc = 0;
+       int cpu;
 
        spin_lock(&session->lock);
        task = iscsi_itt_to_task(bnx2i_conn->cls_conn->dd_data,
@@ -1912,7 +1913,12 @@ static int bnx2i_queue_scsi_cmd_resp(struct iscsi_session *session,
        sc = task->sc;
        spin_unlock(&session->lock);
 
-       p = &per_cpu(bnx2i_percpu, sc->request->cpu);
+       if (!blk_rq_cpu_valid(sc->request))
+               cpu = smp_processor_id();
+       else
+               cpu = sc->request->cpu;
+
+       p = &per_cpu(bnx2i_percpu, cpu);
        spin_lock(&p->p_work_lock);
        if (unlikely(!p->iothread)) {
                rc = -EINVAL;