fix NULL-pointer dereference on scsi_run_queue

Change-Id: I446d6a142941d34feaa27844c71b53470a6a5a3d
kernel_sony_apq8064: Merge Sony 10.4.1.B.0.101 (2/2 sensor stuff)

Conflicts:
	arch/arm/configs/cm_fusion3_dogo_defconfig
	arch/arm/configs/cm_fusion3_odin_defconfig
	arch/arm/configs/cm_fusion3_pollux_defconfig
	arch/arm/configs/cm_fusion3_pollux_windy_defconfig
	arch/arm/configs/cm_fusion3_yuga_defconfig

Change-Id: Ie35df92388e662d14a83b025160f904f330817d2
msm: dma: Moving queue_work() function within spinlock

Currently we are adding a dma command to the staged list with in a
spinlock and then adding to workqueue using queue_work after unlocking
the spinlock. With this there is chance of executing DMA commands in out
of order in below concurrency case.

Tread1                                Thread2
__msm_dmov_enqueue_cmd_ext
   spin_lock_irqsave(..)
   list_add_tail(..)
   spin_unlock_irqrestore(..)
       --PREEMPT--
                                      __msm_dmov_enqueue_cmd_ext
                                         spin_lock_irqsave(..)
                                         list_add_tail(..)
                                         spin_unlock_irqrestore(..)
                                         queue_work()
                                         ..
   queue_work()
So adding queue_work with in spin_lock will make sure that the
work added in the work_queue is processed in the same order as they
are added in staged_commands.

CRs-Fixed: 423190,669409
Change-Id: I2ffd1327fb5f0cd1f06db7de9c026d1c4997fe4d
Acked-by: Gopi Krishna Nedanuri <gnedanur@qti.qualcomm.com>
Signed-off-by: Utsab Bose <ubose@codeaurora.org>
Signed-off-by: Vijay Kumar T M <vtmuni@codeaurora.org>