Re: [PATCH 5/6] target: Allocate se_luns only when used

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

 



> -	se_tpg->tpg_lun_list = array_zalloc(TRANSPORT_MAX_LUNS_PER_TPG,
> -			sizeof(struct se_lun), GFP_KERNEL);
> +	se_tpg->tpg_lun_list = kzalloc(TRANSPORT_MAX_LUNS_PER_TPG * sizeof(void*),
> +				       GFP_KERNEL);

Again seems like the pointer array should just be embedded instead of
dynamically allocated.  Also given that it's properly typdef the kcalloc
should have used the type instead of void *.  And it should have been
kcalloc to start with..

> +void core_tpg_free_lun(
> +	struct se_portal_group *tpg,
> +	struct se_lun *lun)
> +{
>  	spin_lock(&tpg->tpg_lun_lock);
> -	lun->lun_status = TRANSPORT_LUN_STATUS_FREE;
> +	tpg->tpg_lun_list[lun->unpacked_lun] = NULL;
>  	spin_unlock(&tpg->tpg_lun_lock);
> +
> +	kfree(lun);

I can't see how the synchronization can work without refcounting the lun
structure.  The lock just protectes the assignment, but you free it
right after.  What happens to how jsut dereferenced it under the lock
but then uses it outside (e.g. core_dev_add_initiator_node_lun_acl).
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux