Re: [PATCH 2/4] target/core: use save/restore lock primitive in core_dec_lacl_count()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 2012-01-10 at 14:16 +0100, Sebastian Andrzej Siewior wrote:
> It may happen that uasp will free the request in irq conntext, the
> callchain:
>  uasp_cmd_release() -> transport_generic_free_cmd() -> core_dec_lacl_count()
> where the last function enables the IRQ. Those irqs are re-disabled
> later (due to the spin.*irq_restore) but in between we could get hurt.
> 
> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx>
> ---
>  drivers/target/target_core_device.c |    5 +++--
>  1 files changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/target/target_core_device.c b/drivers/target/target_core_device.c
> index 0c5992f..00159a4 100644
> --- a/drivers/target/target_core_device.c
> +++ b/drivers/target/target_core_device.c
> @@ -320,11 +320,12 @@ int core_free_device_list_for_node(
>  void core_dec_lacl_count(struct se_node_acl *se_nacl, struct se_cmd *se_cmd)
>  {
>  	struct se_dev_entry *deve;
> +	unsigned long flags;
>  
> -	spin_lock_irq(&se_nacl->device_list_lock);
> +	spin_lock_irqsave(&se_nacl->device_list_lock, flags);
>  	deve = &se_nacl->device_list[se_cmd->orig_fe_lun];
>  	deve->deve_cmds--;
> -	spin_unlock_irq(&se_nacl->device_list_lock);
> +	spin_unlock_irqrestore(&se_nacl->device_list_lock, flags);
>  }
>  

Applied to lio-core.git, and will queue to 3.3-rc-fixes as well.

Thanks,

--nab

--
To unsubscribe from this list: send the line "unsubscribe target-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux SCSI]     [Kernel Newbies]     [Linux SCSI Target Infrastructure]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Device Mapper]

  Powered by Linux