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

Commit e9457165 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'usb-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6:
  USB: EHCI: fix obscure race in ehci_endpoint_disable
  USB: gadget: AT91: fix typo in atmel_usba_udc driver
  USB: isp1362-hcd - fix section mismatch warning
  USB: EHCI: AMD periodic frame list table quirk
  USB: OTG: langwell_otg: fix up some sysfs attribute permissions
  USB: misc: usbsevseg: fix up some sysfs attribute permissions
  USB: misc: usbled: fix up some sysfs attribute permissions
  USB: misc: trancevibrator: fix up a sysfs attribute permission
  USB: misc: cypress_cy7c63: fix up some sysfs attribute permissions
  USB: storage: sierra_ms: fix sysfs file attribute
  USB: ehci: fix debugfs 'lpm' permissions
  USB: atm: ueagle-atm: fix up some permissions on the sysfs files
  xhci: Fix command ring replay after resume.
  xHCI: fix wMaxPacketSize mask
  xHCI: release spinlock when setup interrupt
  xhci: Remove excessive printks with shared IRQs.
parents 3561d43f 02e2c51b
Loading
Loading
Loading
Loading
+3 −4
Original line number Original line Diff line number Diff line
@@ -2301,7 +2301,7 @@ out:
	return ret;
	return ret;
}
}


static DEVICE_ATTR(stat_status, S_IWUGO | S_IRUGO, read_status, reboot);
static DEVICE_ATTR(stat_status, S_IWUSR | S_IRUGO, read_status, reboot);


static ssize_t read_human_status(struct device *dev,
static ssize_t read_human_status(struct device *dev,
			struct device_attribute *attr, char *buf)
			struct device_attribute *attr, char *buf)
@@ -2364,8 +2364,7 @@ out:
	return ret;
	return ret;
}
}


static DEVICE_ATTR(stat_human_status, S_IWUGO | S_IRUGO,
static DEVICE_ATTR(stat_human_status, S_IRUGO, read_human_status, NULL);
				read_human_status, NULL);


static ssize_t read_delin(struct device *dev, struct device_attribute *attr,
static ssize_t read_delin(struct device *dev, struct device_attribute *attr,
		char *buf)
		char *buf)
@@ -2397,7 +2396,7 @@ out:
	return ret;
	return ret;
}
}


static DEVICE_ATTR(stat_delin, S_IWUGO | S_IRUGO, read_delin, NULL);
static DEVICE_ATTR(stat_delin, S_IRUGO, read_delin, NULL);


#define UEA_ATTR(name, reset)					\
#define UEA_ATTR(name, reset)					\
								\
								\
+1 −1
Original line number Original line Diff line number Diff line
@@ -2017,7 +2017,7 @@ static int __init usba_udc_probe(struct platform_device *pdev)
			}
			}
		} else {
		} else {
			/* gpio_request fail so use -EINVAL for gpio_is_valid */
			/* gpio_request fail so use -EINVAL for gpio_is_valid */
			ubc->vbus_pin = -EINVAL;
			udc->vbus_pin = -EINVAL;
		}
		}
	}
	}


+1 −1
Original line number Original line Diff line number Diff line
@@ -1067,7 +1067,7 @@ static inline void create_debug_files (struct ehci_hcd *ehci)
						    &debug_registers_fops))
						    &debug_registers_fops))
		goto file_error;
		goto file_error;


	if (!debugfs_create_file("lpm", S_IRUGO|S_IWUGO, ehci->debug_dir, bus,
	if (!debugfs_create_file("lpm", S_IRUGO|S_IWUSR, ehci->debug_dir, bus,
						    &debug_lpm_fops))
						    &debug_lpm_fops))
		goto file_error;
		goto file_error;


+5 −5
Original line number Original line Diff line number Diff line
@@ -1063,9 +1063,10 @@ rescan:
				tmp && tmp != qh;
				tmp && tmp != qh;
				tmp = tmp->qh_next.qh)
				tmp = tmp->qh_next.qh)
			continue;
			continue;
		/* periodic qh self-unlinks on empty */
		/* periodic qh self-unlinks on empty, and a COMPLETING qh
		if (!tmp)
		 * may already be unlinked.
			goto nogood;
		 */
		if (tmp)
			unlink_async(ehci, qh);
			unlink_async(ehci, qh);
		/* FALL THROUGH */
		/* FALL THROUGH */
	case QH_STATE_UNLINK:		/* wait for hw to finish? */
	case QH_STATE_UNLINK:		/* wait for hw to finish? */
@@ -1083,7 +1084,6 @@ idle_timeout:
		}
		}
		/* else FALL THROUGH */
		/* else FALL THROUGH */
	default:
	default:
nogood:
		/* caller was supposed to have unlinked any requests;
		/* caller was supposed to have unlinked any requests;
		 * that's not our job.  just leak this memory.
		 * that's not our job.  just leak this memory.
		 */
		 */
+24 −2
Original line number Original line Diff line number Diff line
@@ -141,6 +141,10 @@ static void ehci_mem_cleanup (struct ehci_hcd *ehci)
		qh_put (ehci->async);
		qh_put (ehci->async);
	ehci->async = NULL;
	ehci->async = NULL;


	if (ehci->dummy)
		qh_put(ehci->dummy);
	ehci->dummy = NULL;

	/* DMA consistent memory and pools */
	/* DMA consistent memory and pools */
	if (ehci->qtd_pool)
	if (ehci->qtd_pool)
		dma_pool_destroy (ehci->qtd_pool);
		dma_pool_destroy (ehci->qtd_pool);
@@ -227,8 +231,26 @@ static int ehci_mem_init (struct ehci_hcd *ehci, gfp_t flags)
	if (ehci->periodic == NULL) {
	if (ehci->periodic == NULL) {
		goto fail;
		goto fail;
	}
	}

	if (ehci->use_dummy_qh) {
		struct ehci_qh_hw	*hw;
		ehci->dummy = ehci_qh_alloc(ehci, flags);
		if (!ehci->dummy)
			goto fail;

		hw = ehci->dummy->hw;
		hw->hw_next = EHCI_LIST_END(ehci);
		hw->hw_qtd_next = EHCI_LIST_END(ehci);
		hw->hw_alt_next = EHCI_LIST_END(ehci);
		hw->hw_token &= ~QTD_STS_ACTIVE;
		ehci->dummy->hw = hw;

		for (i = 0; i < ehci->periodic_size; i++)
			ehci->periodic[i] = ehci->dummy->qh_dma;
	} else {
		for (i = 0; i < ehci->periodic_size; i++)
		for (i = 0; i < ehci->periodic_size; i++)
			ehci->periodic[i] = EHCI_LIST_END(ehci);
			ehci->periodic[i] = EHCI_LIST_END(ehci);
	}


	/* software shadow of hardware table */
	/* software shadow of hardware table */
	ehci->pshadow = kcalloc(ehci->periodic_size, sizeof(void *), flags);
	ehci->pshadow = kcalloc(ehci->periodic_size, sizeof(void *), flags);
Loading