lkml.org 
[lkml]   [2013]   [Jul]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[ 041/103] libata-zpodd: must use ata_tf_init()
    Date
    3.10-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>

    commit d0887c43f51c308b01605346e55d906ba858a6f9 upstream.

    There are some SATA controllers which have both devices 0 and 1 but this module
    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@cogentembedded.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/ata/libata-zpodd.c | 7 ++++---
    1 file changed, 4 insertions(+), 3 deletions(-)

    --- a/drivers/ata/libata-zpodd.c
    +++ b/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;



    \
     
     \ /
      Last update: 2013-07-24 01:41    [W:2.105 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site