Re: [PATCH] libata-zpodd: must use ata_tf_init()

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

 



On 06/24/2013 03:25 AM, Sergei Shtylyov wrote:
> There are  some SATA controllers which have both devices 0 and 1 but this module

Do you mean a SATA port can connect to two SATA devices without PMP?
No objections to this patch, it's obviously correct, just want to learn
something more :-)

Thanks,
Aaron

> just zeroes out taskfile and sets then ATA_TFLAG_DEVICE (not sure that's needed)
> which could  lead to a wrong device being selected just before issuing command.
> Thus we should  call ata_tf_init()  which sets  up the device register value
> properly, like  all other users of ata_exec_internal() do...
> 
> Signed-off-by: Sergei Shtylyov <sergei.shtylyov@xxxxxxxxxxxxxxxxxx>
> 
> ---
> The  patch is against the 'for-3.10-fixes' branch of Tejun Heo's 'libata.git'
> repository. 
> 
>  drivers/ata/libata-zpodd.c |    7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
> 
> Index: libata/drivers/ata/libata-zpodd.c
> ===================================================================
> --- libata.orig/drivers/ata/libata-zpodd.c
> +++ libata/drivers/ata/libata-zpodd.c
> @@ -32,13 +32,14 @@ struct zpodd {
>  
>  static int eject_tray(struct ata_device *dev)
>  {
> -	struct ata_taskfile tf = {};
> +	struct ata_taskfile tf;
>  	const char cdb[] = {  GPCMD_START_STOP_UNIT,
>  		0, 0, 0,
>  		0x02,     /* LoEj */
>  		0, 0, 0, 0, 0, 0, 0,
>  	};
>  
> +	ata_tf_init(dev, &tf);
>  	tf.flags = ATA_TFLAG_ISADDR | ATA_TFLAG_DEVICE;
>  	tf.command = ATA_CMD_PACKET;
>  	tf.protocol = ATAPI_PROT_NODATA;
> @@ -52,8 +53,7 @@ static enum odd_mech_type zpodd_get_mech
>  	char buf[16];
>  	unsigned int ret;
>  	struct rm_feature_desc *desc = (void *)(buf + 8);
> -	struct ata_taskfile tf = {};
> -
> +	struct ata_taskfile tf;
>  	char cdb[] = {  GPCMD_GET_CONFIGURATION,
>  			2,      /* only 1 feature descriptor requested */
>  			0, 3,   /* 3, removable medium feature */
> @@ -62,6 +62,7 @@ static enum odd_mech_type zpodd_get_mech
>  			0, 0, 0,
>  	};
>  
> +	ata_tf_init(dev, &tf);
>  	tf.flags = ATA_TFLAG_ISADDR | ATA_TFLAG_DEVICE;
>  	tf.command = ATA_CMD_PACKET;
>  	tf.protocol = ATAPI_PROT_PIO;
> --
> To unsubscribe from this list: send the line "unsubscribe linux-ide" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

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




[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux