1. 10 5月, 2016 7 次提交
  2. 05 4月, 2016 2 次提交
  3. 11 2月, 2016 1 次提交
    • A
      libata: fix HDIO_GET_32BIT ioctl · 287e6611
      Arnd Bergmann 提交于
      As reported by Soohoon Lee, the HDIO_GET_32BIT ioctl does not
      work correctly in compat mode with libata.
      
      I have investigated the issue further and found multiple problems
      that all appeared with the same commit that originally introduced
      HDIO_GET_32BIT handling in libata back in linux-2.6.8 and presumably
      also linux-2.4, as the code uses "copy_to_user(arg, &val, 1)" to copy
      a 'long' variable containing either 0 or 1 to user space.
      
      The problems with this are:
      
      * On big-endian machines, this will always write a zero because it
        stores the wrong byte into user space.
      
      * In compat mode, the upper three bytes of the variable are updated
        by the compat_hdio_ioctl() function, but they now contain
        uninitialized stack data.
      
      * The hdparm tool calling this ioctl uses a 'static long' variable
        to store the result. This means at least the upper bytes are
        initialized to zero, but calling another ioctl like HDIO_GET_MULTCOUNT
        would fill them with data that remains stale when the low byte
        is overwritten. Fortunately libata doesn't implement any of the
        affected ioctl commands, so this would only happen when we query
        both an IDE and an ATA device in the same command such as
        "hdparm -N -c /dev/hda /dev/sda"
      
      * The libata code for unknown reasons started using ATA_IOC_GET_IO32
        and ATA_IOC_SET_IO32 as aliases for HDIO_GET_32BIT and HDIO_SET_32BIT,
        while the ioctl commands that were added later use the normal
        HDIO_* names. This is harmless but rather confusing.
      
      This addresses all four issues by changing the code to use put_user()
      on an 'unsigned long' variable in HDIO_GET_32BIT, like the IDE subsystem
      does, and by clarifying the names of the ioctl commands.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Reported-by: NSoohoon Lee <Soohoon.Lee@f5.com>
      Tested-by: NSoohoon Lee <Soohoon.Lee@f5.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: NTejun Heo <tj@kernel.org>
      287e6611
  4. 04 8月, 2015 2 次提交
    • T
      Revert "libata: Implement NCQ autosense" · 74a80d67
      Tejun Heo 提交于
      This reverts commit 42b966fb.
      
      As implemented, ACS-4 sense reporting for ATA devices bypasses error
      diagnosis and handling in libata degrading EH behavior significantly.
      Revert the related changes for now.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Cc: Hannes Reinecke <hare@suse.de>
      Cc: stable@vger.kernel.org #v4.1+
      74a80d67
    • T
      Revert "libata: Implement support for sense data reporting" · 84ded2f8
      Tejun Heo 提交于
      This reverts commit fe7173c2.
      
      As implemented, ACS-4 sense reporting for ATA devices bypasses error
      diagnosis and handling in libata degrading EH behavior significantly.
      Revert the related changes for now.
      
      ATA_ID_COMMAND_SET_3/4 constants are not reverted as they're used by
      later changes.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Cc: Hannes Reinecke <hare@suse.de>
      Cc: stable@vger.kernel.org #v4.1+
      84ded2f8
  5. 15 7月, 2015 1 次提交
  6. 05 5月, 2015 1 次提交
  7. 27 3月, 2015 4 次提交
  8. 26 12月, 2014 1 次提交
  9. 27 10月, 2013 1 次提交
  10. 25 8月, 2013 1 次提交
  11. 16 7月, 2013 1 次提交
  12. 04 4月, 2013 1 次提交
    • S
      libata: Use integer return value for atapi_command_packet_set · d8668fcb
      Shan Hai 提交于
      The function returns type of ATAPI drives so it should return integer value.
      The commit 4dce8ba9 (libata: Use 'bool' return value for ata_id_XXX) since
      v2.6.39 changed the type of return value from int to bool, the change would
      cause all of the ATAPI class drives to be treated as TYPE_TAPE and the
      max_sectors of the drives to be set to 65535 because of the commit
      f8d8e579(libata: increase 128 KB / cmd limit for ATAPI tape drives), for the
      function would return true for all ATAPI class drives and the TYPE_TAPE is
      defined as 0x01.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: NShan Hai <shan.hai@windriver.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      d8668fcb
  13. 15 1月, 2013 1 次提交
  14. 14 12月, 2012 1 次提交
    • J
      Revert "libata: check SATA_SETTINGS log with HW Feature Ctrl" · 8349e5ae
      Jeff Garzik 提交于
      This reverts commit de90cd71.
      
      Shane Huang writes:
      
        Please suspend this patch because I just received two new
        DevSlp drives but found word 78 bit 5 is _not_ set.
      
        I'm checking with the drive vendor whether he gave me
        the wrong information. If bit 5 is not the necessary and
        sufficient condition, I will implement another patch to
        replace ata_device->sata_settings into ->devslp_timing.
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      8349e5ae
  15. 03 12月, 2012 1 次提交
    • S
      libata: check SATA_SETTINGS log with HW Feature Ctrl · de90cd71
      Shane Huang 提交于
      NCQ capability was used to check availability of SATA Settings page
      from Identify Device Data Log, which contains DevSlp timing variables.
      It does not work on some HDDs and leads to error messages.
      IDENTIFY word 78 bit 5(Hardware Feature Control) should be used.
      
      Quoting SATA spec 3.1:
      If Hardware Feature Control is supported, then:
      a) IDENTIFY DEVICE data word 78 bit 5 (see 13.2.1.18) shall be
      set to one;
      b) the SET FEATURES Select Hardware Feature Control subcommand
      shall be supported (see 13.3.8);
      c) page 08h of the Identify Device Data log (see 13.7.7) shall
      be supported;
      
      This patch is not tested on SATA HDD with DevSlp supported.
      Reported-by: NBorislav Petkov <bp@amd64.org>
      Signed-off-by: NShane Huang <shane.huang@amd.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      de90cd71
  16. 13 9月, 2012 2 次提交
  17. 29 6月, 2012 1 次提交
  18. 15 3月, 2011 1 次提交
  19. 14 3月, 2011 1 次提交
  20. 22 10月, 2010 1 次提交
  21. 20 5月, 2010 1 次提交
  22. 09 4月, 2010 1 次提交
  23. 02 3月, 2010 1 次提交
    • B
      ata: Detect Delkin Devices compact flash · 4b7d1c05
      Ben Gardner 提交于
      I have a Delkin Devices compact flash card that isn't being recognized using the
      SATA/PATA drivers.
      The card is recognized and works with the deprecated ATA drivers.
      
      The error I am seeing is:
      ata1.00: failed to IDENTIFY (device reports invalid type, err_mask=0x0)
      
      I tracked it down to ata_id_is_cfa() in include/linux/ata.h.
      The Delkin card has id[0] set to 0x844a and id[83] set to 0.
      This isn't what the kernel expects and is probably incorrect.
      
      The simplest work-around is to add a check for 0x844a to ata_id_is_cfa().
      Signed-off-by: NBen Gardner <gardner.ben@gmail.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      4b7d1c05
  24. 04 2月, 2010 1 次提交
  25. 04 12月, 2009 2 次提交
  26. 03 12月, 2009 1 次提交
    • C
      libata: add translation for SCSI WRITE SAME (aka TRIM support) · 18f0f978
      Christoph Hellwig 提交于
      Add support for the ATA TRIM command in libata.  We translate a WRITE SAME 16
      command with the unmap bit set into an ATA TRIM command and export enough
      information in READ CAPACITY 16 and the block limits EVPD page so that the new
      SCSI layer discard support will driver this for us.
      
      Note that I hardcode the WRITE_SAME_16 opcode for now as the patch to introduce
      the symbolic is not in 2.6.32 yet but only in the SCSI tree - as soon as it is
      merged we can fix it up to properly use the symbolic name.
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      18f0f978
  27. 06 10月, 2009 1 次提交