Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3dcc4c7d authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull libata fixes from Tejun Heo:
 "Dan found a really old bug where libata hotplug code wasn't sanitizing
  index value from userland and may end up indexing with a negative
  number. It is scary but fortunately can only be triggered by root.

  Other than that, minor fixes"

* 'for-4.13-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata:
  libata: fix a couple of doc build warnings
  libata: array underflow in ata_find_dev()
  ata: sata_rcar: add gen[23] fallback compatibility strings
  libata: remove unused rc in ata_eh_handle_port_resume
  libata: Cleanup ata_read_log_page()
  ata: fix gemini Kconfig dependencies
parents 16f73eb0 2f60e1ab
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
* Renesas R-Car SATA

Required properties:
- compatible		: should contain one of the following:
- compatible		: should contain one or more of the following:
			  - "renesas,sata-r8a7779" for R-Car H1
			    ("renesas,rcar-sata" is deprecated)
			  - "renesas,sata-r8a7790-es1" for R-Car H2 ES1
			  - "renesas,sata-r8a7790" for R-Car H2 other than ES1
			  - "renesas,sata-r8a7791" for R-Car M2-W
			  - "renesas,sata-r8a7793" for R-Car M2-N
			  - "renesas,sata-r8a7795" for R-Car H3
			  - "renesas,rcar-gen2-sata" for a generic R-Car Gen2 compatible device
			  - "renesas,rcar-gen3-sata" for a generic R-Car Gen3 compatible device
			  - "renesas,rcar-sata" is deprecated

			  When compatible with the generic version nodes
			  must list the SoC-specific version corresponding
			  to the platform first followed by the generic
			  version.

- reg			: address and length of the SATA registers;
- interrupts		: must consist of one interrupt specifier.
- clocks		: must contain a reference to the functional clock.
@@ -16,7 +24,7 @@ Required properties:
Example:

sata0: sata@ee300000 {
	compatible = "renesas,sata-r8a7791";
	compatible = "renesas,sata-r8a7791", "renesas,rcar-gen2-sata";
	reg = <0 0xee300000 0 0x2000>;
	interrupt-parent = <&gic>;
	interrupts = <0 105 IRQ_TYPE_LEVEL_HIGH>;
+2 −2
Original line number Diff line number Diff line
@@ -215,7 +215,7 @@ config SATA_FSL

config SATA_GEMINI
	tristate "Gemini SATA bridge support"
	depends on PATA_FTIDE010
	depends on ARCH_GEMINI || COMPILE_TEST
	default ARCH_GEMINI
	help
	  This enabled support for the FTIDE010 to SATA bridge
@@ -613,7 +613,7 @@ config PATA_FTIDE010
	tristate "Faraday Technology FTIDE010 PATA support"
	depends on OF
	depends on ARM
	default ARCH_GEMINI
	depends on SATA_GEMINI
	help
	  This option enables support for the Faraday FTIDE010
	  PATA controller found in the Cortina Gemini SoCs.
+3 −3
Original line number Diff line number Diff line
@@ -2083,7 +2083,7 @@ unsigned int ata_read_log_page(struct ata_device *dev, u8 log,
retry:
	ata_tf_init(dev, &tf);
	if (dev->dma_mode && ata_id_has_read_log_dma_ext(dev->id) &&
	    !(dev->horkage & ATA_HORKAGE_NO_NCQ_LOG)) {
	    !(dev->horkage & ATA_HORKAGE_NO_DMA_LOG)) {
		tf.command = ATA_CMD_READ_LOG_DMA_EXT;
		tf.protocol = ATA_PROT_DMA;
		dma = true;
@@ -2102,8 +2102,8 @@ unsigned int ata_read_log_page(struct ata_device *dev, u8 log,
				     buf, sectors * ATA_SECT_SIZE, 0);

	if (err_mask && dma) {
		dev->horkage |= ATA_HORKAGE_NO_NCQ_LOG;
		ata_dev_warn(dev, "READ LOG DMA EXT failed, trying unqueued\n");
		dev->horkage |= ATA_HORKAGE_NO_DMA_LOG;
		ata_dev_warn(dev, "READ LOG DMA EXT failed, trying PIO\n");
		goto retry;
	}

+3 −4
Original line number Diff line number Diff line
@@ -1434,7 +1434,7 @@ void ata_eh_about_to_do(struct ata_link *link, struct ata_device *dev,

/**
 *	ata_eh_done - EH action complete
*	@ap: target ATA port
 *	@link: ATA link for which EH actions are complete
 *	@dev: target ATA dev for per-dev action (can be NULL)
 *	@action: action just completed
 *
@@ -1576,7 +1576,7 @@ unsigned int atapi_eh_tur(struct ata_device *dev, u8 *r_sense_key)

/**
 *	ata_eh_request_sense - perform REQUEST_SENSE_DATA_EXT
 *	@dev: device to perform REQUEST_SENSE_SENSE_DATA_EXT to
 *	@qc: qc to perform REQUEST_SENSE_SENSE_DATA_EXT to
 *	@cmd: scsi command for which the sense code should be set
 *
 *	Perform REQUEST_SENSE_DATA_EXT after the device reported CHECK
@@ -4175,7 +4175,6 @@ static void ata_eh_handle_port_resume(struct ata_port *ap)
	struct ata_link *link;
	struct ata_device *dev;
	unsigned long flags;
	int rc = 0;

	/* are we resuming? */
	spin_lock_irqsave(ap->lock, flags);
@@ -4202,7 +4201,7 @@ static void ata_eh_handle_port_resume(struct ata_port *ap)
	ata_acpi_set_state(ap, ap->pm_mesg);

	if (ap->ops->port_resume)
		rc = ap->ops->port_resume(ap);
		ap->ops->port_resume(ap);

	/* tell ACPI that we're resuming */
	ata_acpi_on_resume(ap);
+4 −2
Original line number Diff line number Diff line
@@ -3030,10 +3030,12 @@ static unsigned int atapi_xlat(struct ata_queued_cmd *qc)
static struct ata_device *ata_find_dev(struct ata_port *ap, int devno)
{
	if (!sata_pmp_attached(ap)) {
		if (likely(devno < ata_link_max_devices(&ap->link)))
		if (likely(devno >= 0 &&
			   devno < ata_link_max_devices(&ap->link)))
			return &ap->link.device[devno];
	} else {
		if (likely(devno < ap->nr_pmp_links))
		if (likely(devno >= 0 &&
			   devno < ap->nr_pmp_links))
			return &ap->pmp_link[devno].device[0];
	}

Loading