Magellan Linux

Annotation of /trunk/kernel-magellan/patches-3.7/0104-3.7.5-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2041 - (hide annotations) (download)
Mon Jan 28 08:11:35 2013 UTC (11 years, 4 months ago) by niro
File size: 64127 byte(s)
linux-3.7.5
1 niro 2041 diff --git a/Makefile b/Makefile
2     index f9196bc..ecf87b1 100644
3     --- a/Makefile
4     +++ b/Makefile
5     @@ -169,7 +169,7 @@ SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \
6     -e s/arm.*/arm/ -e s/sa110/arm/ \
7     -e s/s390x/s390/ -e s/parisc64/parisc/ \
8     -e s/ppc.*/powerpc/ -e s/mips.*/mips/ \
9     - -e s/sh[234].*/sh/ )
10     + -e s/sh[234].*/sh/ -e s/aarch64.*/arm64/ )
11    
12     # Cross compiling and selecting different set of gcc/bin-utils
13     # ---------------------------------------------------------------------------
14     diff --git a/arch/arm64/include/asm/elf.h b/arch/arm64/include/asm/elf.h
15     index 07fea29..fe32c0e 100644
16     --- a/arch/arm64/include/asm/elf.h
17     +++ b/arch/arm64/include/asm/elf.h
18     @@ -26,7 +26,10 @@
19    
20     typedef unsigned long elf_greg_t;
21    
22     -#define ELF_NGREG (sizeof (struct pt_regs) / sizeof(elf_greg_t))
23     +#define ELF_NGREG (sizeof(struct user_pt_regs) / sizeof(elf_greg_t))
24     +#define ELF_CORE_COPY_REGS(dest, regs) \
25     + *(struct user_pt_regs *)&(dest) = (regs)->user_regs;
26     +
27     typedef elf_greg_t elf_gregset_t[ELF_NGREG];
28     typedef struct user_fpsimd_state elf_fpregset_t;
29    
30     diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c
31     index 4a3374e..d18b2b8 100644
32     --- a/arch/x86/kernel/cpu/perf_event.c
33     +++ b/arch/x86/kernel/cpu/perf_event.c
34     @@ -340,9 +340,6 @@ int x86_setup_perfctr(struct perf_event *event)
35     /* BTS is currently only allowed for user-mode. */
36     if (!attr->exclude_kernel)
37     return -EOPNOTSUPP;
38     -
39     - if (!attr->exclude_guest)
40     - return -EOPNOTSUPP;
41     }
42    
43     hwc->config |= config;
44     @@ -385,9 +382,6 @@ int x86_pmu_hw_config(struct perf_event *event)
45     if (event->attr.precise_ip) {
46     int precise = 0;
47    
48     - if (!event->attr.exclude_guest)
49     - return -EOPNOTSUPP;
50     -
51     /* Support for constant skid */
52     if (x86_pmu.pebs_active && !x86_pmu.pebs_broken) {
53     precise++;
54     diff --git a/arch/x86/kernel/step.c b/arch/x86/kernel/step.c
55     index cd3b243..9b4d51d 100644
56     --- a/arch/x86/kernel/step.c
57     +++ b/arch/x86/kernel/step.c
58     @@ -165,10 +165,11 @@ void set_task_blockstep(struct task_struct *task, bool on)
59     * Ensure irq/preemption can't change debugctl in between.
60     * Note also that both TIF_BLOCKSTEP and debugctl should
61     * be changed atomically wrt preemption.
62     - * FIXME: this means that set/clear TIF_BLOCKSTEP is simply
63     - * wrong if task != current, SIGKILL can wakeup the stopped
64     - * tracee and set/clear can play with the running task, this
65     - * can confuse the next __switch_to_xtra().
66     + *
67     + * NOTE: this means that set/clear TIF_BLOCKSTEP is only safe if
68     + * task is current or it can't be running, otherwise we can race
69     + * with __switch_to_xtra(). We rely on ptrace_freeze_traced() but
70     + * PTRACE_KILL is not safe.
71     */
72     local_irq_disable();
73     debugctl = get_debugctlmsr();
74     diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
75     index e8086c7..53dc256 100644
76     --- a/drivers/acpi/processor_idle.c
77     +++ b/drivers/acpi/processor_idle.c
78     @@ -1009,6 +1009,9 @@ static int acpi_processor_setup_cpuidle_cx(struct acpi_processor *pr)
79     return -EINVAL;
80     }
81    
82     + if (!dev)
83     + return -EINVAL;
84     +
85     dev->cpu = pr->id;
86    
87     if (max_cstate == 0)
88     @@ -1200,6 +1203,7 @@ int acpi_processor_cst_has_changed(struct acpi_processor *pr)
89     }
90    
91     /* Populate Updated C-state information */
92     + acpi_processor_get_power_info(pr);
93     acpi_processor_setup_cpuidle_states(pr);
94    
95     /* Enable all cpuidle devices */
96     diff --git a/drivers/acpi/processor_perflib.c b/drivers/acpi/processor_perflib.c
97     index 836bfe0..53e7ac9 100644
98     --- a/drivers/acpi/processor_perflib.c
99     +++ b/drivers/acpi/processor_perflib.c
100     @@ -340,6 +340,13 @@ static void amd_fixup_frequency(struct acpi_processor_px *px, int i)
101     if ((boot_cpu_data.x86 == 0x10 && boot_cpu_data.x86_model < 10)
102     || boot_cpu_data.x86 == 0x11) {
103     rdmsr(MSR_AMD_PSTATE_DEF_BASE + index, lo, hi);
104     + /*
105     + * MSR C001_0064+:
106     + * Bit 63: PstateEn. Read-write. If set, the P-state is valid.
107     + */
108     + if (!(hi & BIT(31)))
109     + return;
110     +
111     fid = lo & 0x3f;
112     did = (lo >> 6) & 7;
113     if (boot_cpu_data.x86 == 0x10)
114     diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
115     index 7862d17..4979127 100644
116     --- a/drivers/ata/ahci.c
117     +++ b/drivers/ata/ahci.c
118     @@ -53,6 +53,7 @@
119    
120     enum {
121     AHCI_PCI_BAR_STA2X11 = 0,
122     + AHCI_PCI_BAR_ENMOTUS = 2,
123     AHCI_PCI_BAR_STANDARD = 5,
124     };
125    
126     @@ -410,6 +411,9 @@ static const struct pci_device_id ahci_pci_tbl[] = {
127     { PCI_VDEVICE(ASMEDIA, 0x0611), board_ahci }, /* ASM1061 */
128     { PCI_VDEVICE(ASMEDIA, 0x0612), board_ahci }, /* ASM1062 */
129    
130     + /* Enmotus */
131     + { PCI_DEVICE(0x1c44, 0x8000), board_ahci },
132     +
133     /* Generic, PCI class code for AHCI */
134     { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
135     PCI_CLASS_STORAGE_SATA_AHCI, 0xffffff, board_ahci },
136     @@ -1098,9 +1102,11 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
137     dev_info(&pdev->dev,
138     "PDC42819 can only drive SATA devices with this driver\n");
139    
140     - /* The Connext uses non-standard BAR */
141     + /* Both Connext and Enmotus devices use non-standard BARs */
142     if (pdev->vendor == PCI_VENDOR_ID_STMICRO && pdev->device == 0xCC06)
143     ahci_pci_bar = AHCI_PCI_BAR_STA2X11;
144     + else if (pdev->vendor == 0x1c44 && pdev->device == 0x8000)
145     + ahci_pci_bar = AHCI_PCI_BAR_ENMOTUS;
146    
147     /* acquire resources */
148     rc = pcim_enable_device(pdev);
149     diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c
150     index 4201e53..1d40fe8 100644
151     --- a/drivers/ata/libahci.c
152     +++ b/drivers/ata/libahci.c
153     @@ -1951,13 +1951,13 @@ static void ahci_set_aggressive_devslp(struct ata_port *ap, bool sleep)
154     /* Use the nominal value 10 ms if the read MDAT is zero,
155     * the nominal value of DETO is 20 ms.
156     */
157     - if (dev->sata_settings[ATA_LOG_DEVSLP_VALID] &
158     + if (dev->devslp_timing[ATA_LOG_DEVSLP_VALID] &
159     ATA_LOG_DEVSLP_VALID_MASK) {
160     - mdat = dev->sata_settings[ATA_LOG_DEVSLP_MDAT] &
161     + mdat = dev->devslp_timing[ATA_LOG_DEVSLP_MDAT] &
162     ATA_LOG_DEVSLP_MDAT_MASK;
163     if (!mdat)
164     mdat = 10;
165     - deto = dev->sata_settings[ATA_LOG_DEVSLP_DETO];
166     + deto = dev->devslp_timing[ATA_LOG_DEVSLP_DETO];
167     if (!deto)
168     deto = 20;
169     } else {
170     diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
171     index 586362e..c8ac4fe 100644
172     --- a/drivers/ata/libata-core.c
173     +++ b/drivers/ata/libata-core.c
174     @@ -2324,24 +2324,28 @@ int ata_dev_configure(struct ata_device *dev)
175     }
176     }
177    
178     - /* check and mark DevSlp capability */
179     - if (ata_id_has_devslp(dev->id))
180     - dev->flags |= ATA_DFLAG_DEVSLP;
181     -
182     - /* Obtain SATA Settings page from Identify Device Data Log,
183     - * which contains DevSlp timing variables etc.
184     - * Exclude old devices with ata_id_has_ncq()
185     + /* Check and mark DevSlp capability. Get DevSlp timing variables
186     + * from SATA Settings page of Identify Device Data Log.
187     */
188     - if (ata_id_has_ncq(dev->id)) {
189     + if (ata_id_has_devslp(dev->id)) {
190     + u8 sata_setting[ATA_SECT_SIZE];
191     + int i, j;
192     +
193     + dev->flags |= ATA_DFLAG_DEVSLP;
194     err_mask = ata_read_log_page(dev,
195     ATA_LOG_SATA_ID_DEV_DATA,
196     ATA_LOG_SATA_SETTINGS,
197     - dev->sata_settings,
198     + sata_setting,
199     1);
200     if (err_mask)
201     ata_dev_dbg(dev,
202     "failed to get Identify Device Data, Emask 0x%x\n",
203     err_mask);
204     + else
205     + for (i = 0; i < ATA_LOG_DEVSLP_SIZE; i++) {
206     + j = ATA_LOG_DEVSLP_OFFSET + i;
207     + dev->devslp_timing[i] = sata_setting[j];
208     + }
209     }
210    
211     dev->cdb_len = 16;
212     diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
213     index bf039b0..bcf4437 100644
214     --- a/drivers/ata/libata-eh.c
215     +++ b/drivers/ata/libata-eh.c
216     @@ -2094,7 +2094,7 @@ static unsigned int ata_eh_speed_down(struct ata_device *dev,
217     */
218     static inline int ata_eh_worth_retry(struct ata_queued_cmd *qc)
219     {
220     - if (qc->flags & AC_ERR_MEDIA)
221     + if (qc->err_mask & AC_ERR_MEDIA)
222     return 0; /* don't retry media errors */
223     if (qc->flags & ATA_QCFLAG_IO)
224     return 1; /* otherwise retry anything from fs stack */
225     diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
226     index 0bdde8f..07a18e2 100644
227     --- a/drivers/block/virtio_blk.c
228     +++ b/drivers/block/virtio_blk.c
229     @@ -889,6 +889,7 @@ static void __devexit virtblk_remove(struct virtio_device *vdev)
230     {
231     struct virtio_blk *vblk = vdev->priv;
232     int index = vblk->index;
233     + int refc;
234    
235     /* Prevent config work handler from accessing the device. */
236     mutex_lock(&vblk->config_lock);
237     @@ -903,11 +904,15 @@ static void __devexit virtblk_remove(struct virtio_device *vdev)
238    
239     flush_work(&vblk->config_work);
240    
241     + refc = atomic_read(&disk_to_dev(vblk->disk)->kobj.kref.refcount);
242     put_disk(vblk->disk);
243     mempool_destroy(vblk->pool);
244     vdev->config->del_vqs(vdev);
245     kfree(vblk);
246     - ida_simple_remove(&vd_index_ida, index);
247     +
248     + /* Only free device id if we don't have any users */
249     + if (refc == 1)
250     + ida_simple_remove(&vd_index_ida, index);
251     }
252    
253     #ifdef CONFIG_PM
254     diff --git a/drivers/cpufreq/Kconfig.x86 b/drivers/cpufreq/Kconfig.x86
255     index 934854a..7227cd7 100644
256     --- a/drivers/cpufreq/Kconfig.x86
257     +++ b/drivers/cpufreq/Kconfig.x86
258     @@ -106,7 +106,7 @@ config X86_POWERNOW_K7_ACPI
259     config X86_POWERNOW_K8
260     tristate "AMD Opteron/Athlon64 PowerNow!"
261     select CPU_FREQ_TABLE
262     - depends on ACPI && ACPI_PROCESSOR
263     + depends on ACPI && ACPI_PROCESSOR && X86_ACPI_CPUFREQ
264     help
265     This adds the CPUFreq driver for K8/early Opteron/Athlon64 processors.
266     Support for K10 and newer processors is now in acpi-cpufreq.
267     diff --git a/drivers/cpufreq/acpi-cpufreq.c b/drivers/cpufreq/acpi-cpufreq.c
268     index 0d048f6..7b0d49d 100644
269     --- a/drivers/cpufreq/acpi-cpufreq.c
270     +++ b/drivers/cpufreq/acpi-cpufreq.c
271     @@ -1030,4 +1030,11 @@ MODULE_PARM_DESC(acpi_pstate_strict,
272     late_initcall(acpi_cpufreq_init);
273     module_exit(acpi_cpufreq_exit);
274    
275     +static const struct x86_cpu_id acpi_cpufreq_ids[] = {
276     + X86_FEATURE_MATCH(X86_FEATURE_ACPI),
277     + X86_FEATURE_MATCH(X86_FEATURE_HW_PSTATE),
278     + {}
279     +};
280     +MODULE_DEVICE_TABLE(x86cpu, acpi_cpufreq_ids);
281     +
282     MODULE_ALIAS("acpi");
283     diff --git a/drivers/dma/ioat/dma_v3.c b/drivers/dma/ioat/dma_v3.c
284     index f7f1dc6..ed0e8b7 100644
285     --- a/drivers/dma/ioat/dma_v3.c
286     +++ b/drivers/dma/ioat/dma_v3.c
287     @@ -951,7 +951,7 @@ static int __devinit ioat_xor_val_self_test(struct ioatdma_device *device)
288     goto free_resources;
289     }
290     }
291     - dma_sync_single_for_device(dev, dest_dma, PAGE_SIZE, DMA_TO_DEVICE);
292     + dma_sync_single_for_device(dev, dest_dma, PAGE_SIZE, DMA_FROM_DEVICE);
293    
294     /* skip validate if the capability is not present */
295     if (!dma_has_cap(DMA_XOR_VAL, dma_chan->device->cap_mask))
296     diff --git a/drivers/dma/tegra20-apb-dma.c b/drivers/dma/tegra20-apb-dma.c
297     index 528c62d..3cf2ca8 100644
298     --- a/drivers/dma/tegra20-apb-dma.c
299     +++ b/drivers/dma/tegra20-apb-dma.c
300     @@ -266,6 +266,7 @@ static struct tegra_dma_desc *tegra_dma_desc_get(
301     if (async_tx_test_ack(&dma_desc->txd)) {
302     list_del(&dma_desc->node);
303     spin_unlock_irqrestore(&tdc->lock, flags);
304     + dma_desc->txd.flags = 0;
305     return dma_desc;
306     }
307     }
308     @@ -1050,7 +1051,9 @@ struct dma_async_tx_descriptor *tegra_dma_prep_dma_cyclic(
309     TEGRA_APBDMA_AHBSEQ_WRAP_SHIFT;
310     ahb_seq |= TEGRA_APBDMA_AHBSEQ_BUS_WIDTH_32;
311    
312     - csr |= TEGRA_APBDMA_CSR_FLOW | TEGRA_APBDMA_CSR_IE_EOC;
313     + csr |= TEGRA_APBDMA_CSR_FLOW;
314     + if (flags & DMA_PREP_INTERRUPT)
315     + csr |= TEGRA_APBDMA_CSR_IE_EOC;
316     csr |= tdc->dma_sconfig.slave_id << TEGRA_APBDMA_CSR_REQ_SEL_SHIFT;
317    
318     apb_seq |= TEGRA_APBDMA_APBSEQ_WRAP_WORD_1;
319     @@ -1095,7 +1098,8 @@ struct dma_async_tx_descriptor *tegra_dma_prep_dma_cyclic(
320     mem += len;
321     }
322     sg_req->last_sg = true;
323     - dma_desc->txd.flags = 0;
324     + if (flags & DMA_CTRL_ACK)
325     + dma_desc->txd.flags = DMA_CTRL_ACK;
326    
327     /*
328     * Make sure that mode should not be conflicting with currently
329     diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c
330     index b298158..fd3ae62 100644
331     --- a/drivers/firmware/dmi_scan.c
332     +++ b/drivers/firmware/dmi_scan.c
333     @@ -16,6 +16,7 @@
334     */
335     static char dmi_empty_string[] = " ";
336    
337     +static u16 __initdata dmi_ver;
338     /*
339     * Catch too early calls to dmi_check_system():
340     */
341     @@ -118,12 +119,12 @@ static int __init dmi_walk_early(void (*decode)(const struct dmi_header *,
342     return 0;
343     }
344    
345     -static int __init dmi_checksum(const u8 *buf)
346     +static int __init dmi_checksum(const u8 *buf, u8 len)
347     {
348     u8 sum = 0;
349     int a;
350    
351     - for (a = 0; a < 15; a++)
352     + for (a = 0; a < len; a++)
353     sum += buf[a];
354    
355     return sum == 0;
356     @@ -161,8 +162,10 @@ static void __init dmi_save_uuid(const struct dmi_header *dm, int slot, int inde
357     return;
358    
359     for (i = 0; i < 16 && (is_ff || is_00); i++) {
360     - if(d[i] != 0x00) is_ff = 0;
361     - if(d[i] != 0xFF) is_00 = 0;
362     + if (d[i] != 0x00)
363     + is_00 = 0;
364     + if (d[i] != 0xFF)
365     + is_ff = 0;
366     }
367    
368     if (is_ff || is_00)
369     @@ -172,7 +175,15 @@ static void __init dmi_save_uuid(const struct dmi_header *dm, int slot, int inde
370     if (!s)
371     return;
372    
373     - sprintf(s, "%pUB", d);
374     + /*
375     + * As of version 2.6 of the SMBIOS specification, the first 3 fields of
376     + * the UUID are supposed to be little-endian encoded. The specification
377     + * says that this is the defacto standard.
378     + */
379     + if (dmi_ver >= 0x0206)
380     + sprintf(s, "%pUL", d);
381     + else
382     + sprintf(s, "%pUB", d);
383    
384     dmi_ident[slot] = s;
385     }
386     @@ -404,29 +415,57 @@ static int __init dmi_present(const char __iomem *p)
387     u8 buf[15];
388    
389     memcpy_fromio(buf, p, 15);
390     - if ((memcmp(buf, "_DMI_", 5) == 0) && dmi_checksum(buf)) {
391     + if (dmi_checksum(buf, 15)) {
392     dmi_num = (buf[13] << 8) | buf[12];
393     dmi_len = (buf[7] << 8) | buf[6];
394     dmi_base = (buf[11] << 24) | (buf[10] << 16) |
395     (buf[9] << 8) | buf[8];
396    
397     - /*
398     - * DMI version 0.0 means that the real version is taken from
399     - * the SMBIOS version, which we don't know at this point.
400     - */
401     - if (buf[14] != 0)
402     - printk(KERN_INFO "DMI %d.%d present.\n",
403     - buf[14] >> 4, buf[14] & 0xF);
404     - else
405     - printk(KERN_INFO "DMI present.\n");
406     if (dmi_walk_early(dmi_decode) == 0) {
407     + if (dmi_ver)
408     + pr_info("SMBIOS %d.%d present.\n",
409     + dmi_ver >> 8, dmi_ver & 0xFF);
410     + else {
411     + dmi_ver = (buf[14] & 0xF0) << 4 |
412     + (buf[14] & 0x0F);
413     + pr_info("Legacy DMI %d.%d present.\n",
414     + dmi_ver >> 8, dmi_ver & 0xFF);
415     + }
416     dmi_dump_ids();
417     return 0;
418     }
419     }
420     + dmi_ver = 0;
421     return 1;
422     }
423    
424     +static int __init smbios_present(const char __iomem *p)
425     +{
426     + u8 buf[32];
427     + int offset = 0;
428     +
429     + memcpy_fromio(buf, p, 32);
430     + if ((buf[5] < 32) && dmi_checksum(buf, buf[5])) {
431     + dmi_ver = (buf[6] << 8) + buf[7];
432     +
433     + /* Some BIOS report weird SMBIOS version, fix that up */
434     + switch (dmi_ver) {
435     + case 0x021F:
436     + case 0x0221:
437     + pr_debug("SMBIOS version fixup(2.%d->2.%d)\n",
438     + dmi_ver & 0xFF, 3);
439     + dmi_ver = 0x0203;
440     + break;
441     + case 0x0233:
442     + pr_debug("SMBIOS version fixup(2.%d->2.%d)\n", 51, 6);
443     + dmi_ver = 0x0206;
444     + break;
445     + }
446     + offset = 16;
447     + }
448     + return dmi_present(buf + offset);
449     +}
450     +
451     void __init dmi_scan_machine(void)
452     {
453     char __iomem *p, *q;
454     @@ -444,7 +483,7 @@ void __init dmi_scan_machine(void)
455     if (p == NULL)
456     goto error;
457    
458     - rc = dmi_present(p + 0x10); /* offset of _DMI_ string */
459     + rc = smbios_present(p);
460     dmi_iounmap(p, 32);
461     if (!rc) {
462     dmi_available = 1;
463     @@ -462,7 +501,12 @@ void __init dmi_scan_machine(void)
464     goto error;
465    
466     for (q = p; q < p + 0x10000; q += 16) {
467     - rc = dmi_present(q);
468     + if (memcmp(q, "_SM_", 4) == 0 && q - p <= 0xFFE0)
469     + rc = smbios_present(q);
470     + else if (memcmp(q, "_DMI_", 5) == 0)
471     + rc = dmi_present(q);
472     + else
473     + continue;
474     if (!rc) {
475     dmi_available = 1;
476     dmi_iounmap(p, 0x10000);
477     diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
478     index 3eea143..67036e9 100644
479     --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
480     +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
481     @@ -548,6 +548,8 @@ i915_gem_execbuffer_relocate_slow(struct drm_device *dev,
482     total = 0;
483     for (i = 0; i < count; i++) {
484     struct drm_i915_gem_relocation_entry __user *user_relocs;
485     + u64 invalid_offset = (u64)-1;
486     + int j;
487    
488     user_relocs = (void __user *)(uintptr_t)exec[i].relocs_ptr;
489    
490     @@ -558,6 +560,25 @@ i915_gem_execbuffer_relocate_slow(struct drm_device *dev,
491     goto err;
492     }
493    
494     + /* As we do not update the known relocation offsets after
495     + * relocating (due to the complexities in lock handling),
496     + * we need to mark them as invalid now so that we force the
497     + * relocation processing next time. Just in case the target
498     + * object is evicted and then rebound into its old
499     + * presumed_offset before the next execbuffer - if that
500     + * happened we would make the mistake of assuming that the
501     + * relocations were valid.
502     + */
503     + for (j = 0; j < exec[i].relocation_count; j++) {
504     + if (copy_to_user(&user_relocs[j].presumed_offset,
505     + &invalid_offset,
506     + sizeof(invalid_offset))) {
507     + ret = -EFAULT;
508     + mutex_lock(&dev->struct_mutex);
509     + goto err;
510     + }
511     + }
512     +
513     reloc_offset[i] = total;
514     total += exec[i].relocation_count;
515     }
516     diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
517     index 09ae4b0..ecec134 100644
518     --- a/drivers/gpu/drm/i915/i915_reg.h
519     +++ b/drivers/gpu/drm/i915/i915_reg.h
520     @@ -514,6 +514,7 @@
521     * the enables for writing to the corresponding low bit.
522     */
523     #define _3D_CHICKEN 0x02084
524     +#define _3D_CHICKEN_HIZ_PLANE_DISABLE_MSAA_4X_SNB (1 << 10)
525     #define _3D_CHICKEN2 0x0208c
526     /* Disables pipelining of read flushes past the SF-WIZ interface.
527     * Required on all Ironlake steppings according to the B-Spec, but the
528     diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
529     index eaaff3c..e87fa47 100644
530     --- a/drivers/gpu/drm/i915/intel_pm.c
531     +++ b/drivers/gpu/drm/i915/intel_pm.c
532     @@ -3412,6 +3412,10 @@ static void gen6_init_clock_gating(struct drm_device *dev)
533     I915_READ(ILK_DISPLAY_CHICKEN2) |
534     ILK_ELPIN_409_SELECT);
535    
536     + /* WaDisableHiZPlanesWhenMSAAEnabled */
537     + I915_WRITE(_3D_CHICKEN,
538     + _MASKED_BIT_ENABLE(_3D_CHICKEN_HIZ_PLANE_DISABLE_MSAA_4X_SNB));
539     +
540     I915_WRITE(WM3_LP_ILK, 0);
541     I915_WRITE(WM2_LP_ILK, 0);
542     I915_WRITE(WM1_LP_ILK, 0);
543     diff --git a/drivers/i2c/busses/i2c-mxs.c b/drivers/i2c/busses/i2c-mxs.c
544     index 0670da7..a6fad94 100644
545     --- a/drivers/i2c/busses/i2c-mxs.c
546     +++ b/drivers/i2c/busses/i2c-mxs.c
547     @@ -127,7 +127,7 @@ struct mxs_i2c_dev {
548     struct device *dev;
549     void __iomem *regs;
550     struct completion cmd_complete;
551     - u32 cmd_err;
552     + int cmd_err;
553     struct i2c_adapter adapter;
554     const struct mxs_i2c_speed_config *speed;
555    
556     diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c
557     index b0f6b4c..e0fbe77 100644
558     --- a/drivers/idle/intel_idle.c
559     +++ b/drivers/idle/intel_idle.c
560     @@ -460,8 +460,6 @@ static int intel_idle_probe(void)
561     else
562     on_each_cpu(__setup_broadcast_timer, (void *)true, 1);
563    
564     - register_cpu_notifier(&cpu_hotplug_notifier);
565     -
566     pr_debug(PREFIX "v" INTEL_IDLE_VERSION
567     " model 0x%X\n", boot_cpu_data.x86_model);
568    
569     @@ -624,6 +622,7 @@ static int __init intel_idle_init(void)
570     return retval;
571     }
572     }
573     + register_cpu_notifier(&cpu_hotplug_notifier);
574    
575     return 0;
576     }
577     diff --git a/drivers/media/usb/gspca/kinect.c b/drivers/media/usb/gspca/kinect.c
578     index 40ad668..3773a8a7 100644
579     --- a/drivers/media/usb/gspca/kinect.c
580     +++ b/drivers/media/usb/gspca/kinect.c
581     @@ -381,6 +381,7 @@ static const struct sd_desc sd_desc = {
582     /* -- module initialisation -- */
583     static const struct usb_device_id device_table[] = {
584     {USB_DEVICE(0x045e, 0x02ae)},
585     + {USB_DEVICE(0x045e, 0x02bf)},
586     {}
587     };
588    
589     diff --git a/drivers/misc/ti-st/st_kim.c b/drivers/misc/ti-st/st_kim.c
590     index 04a8199..988da4d 100644
591     --- a/drivers/misc/ti-st/st_kim.c
592     +++ b/drivers/misc/ti-st/st_kim.c
593     @@ -468,6 +468,11 @@ long st_kim_start(void *kim_data)
594     if (pdata->chip_enable)
595     pdata->chip_enable(kim_gdata);
596    
597     + /* Configure BT nShutdown to HIGH state */
598     + gpio_set_value(kim_gdata->nshutdown, GPIO_LOW);
599     + mdelay(5); /* FIXME: a proper toggle */
600     + gpio_set_value(kim_gdata->nshutdown, GPIO_HIGH);
601     + mdelay(100);
602     /* re-initialize the completion */
603     INIT_COMPLETION(kim_gdata->ldisc_installed);
604     /* send notification to UIM */
605     @@ -509,7 +514,8 @@ long st_kim_start(void *kim_data)
606     * (b) upon failure to either install ldisc or download firmware.
607     * The function is responsible to (a) notify UIM about un-installation,
608     * (b) flush UART if the ldisc was installed.
609     - * (c) invoke platform's chip disabling routine.
610     + * (c) reset BT_EN - pull down nshutdown at the end.
611     + * (d) invoke platform's chip disabling routine.
612     */
613     long st_kim_stop(void *kim_data)
614     {
615     @@ -541,6 +547,13 @@ long st_kim_stop(void *kim_data)
616     err = -ETIMEDOUT;
617     }
618    
619     + /* By default configure BT nShutdown to LOW state */
620     + gpio_set_value(kim_gdata->nshutdown, GPIO_LOW);
621     + mdelay(1);
622     + gpio_set_value(kim_gdata->nshutdown, GPIO_HIGH);
623     + mdelay(1);
624     + gpio_set_value(kim_gdata->nshutdown, GPIO_LOW);
625     +
626     /* platform specific disable */
627     if (pdata->chip_disable)
628     pdata->chip_disable(kim_gdata);
629     @@ -732,6 +745,20 @@ static int kim_probe(struct platform_device *pdev)
630     /* refer to itself */
631     kim_gdata->core_data->kim_data = kim_gdata;
632    
633     + /* Claim the chip enable nShutdown gpio from the system */
634     + kim_gdata->nshutdown = pdata->nshutdown_gpio;
635     + status = gpio_request(kim_gdata->nshutdown, "kim");
636     + if (unlikely(status)) {
637     + pr_err(" gpio %ld request failed ", kim_gdata->nshutdown);
638     + return status;
639     + }
640     +
641     + /* Configure nShutdown GPIO as output=0 */
642     + status = gpio_direction_output(kim_gdata->nshutdown, 0);
643     + if (unlikely(status)) {
644     + pr_err(" unable to configure gpio %ld", kim_gdata->nshutdown);
645     + return status;
646     + }
647     /* get reference of pdev for request_firmware
648     */
649     kim_gdata->kim_pdev = pdev;
650     @@ -767,10 +794,18 @@ static int kim_probe(struct platform_device *pdev)
651    
652     static int kim_remove(struct platform_device *pdev)
653     {
654     + /* free the GPIOs requested */
655     + struct ti_st_plat_data *pdata = pdev->dev.platform_data;
656     struct kim_data_s *kim_gdata;
657    
658     kim_gdata = dev_get_drvdata(&pdev->dev);
659    
660     + /* Free the Bluetooth/FM/GPIO
661     + * nShutdown gpio from the system
662     + */
663     + gpio_free(pdata->nshutdown_gpio);
664     + pr_info("nshutdown GPIO Freed");
665     +
666     debugfs_remove_recursive(kim_debugfs_dir);
667     sysfs_remove_group(&pdev->dev.kobj, &uim_attr_grp);
668     pr_info("sysfs entries removed");
669     diff --git a/drivers/pci/hotplug/pciehp.h b/drivers/pci/hotplug/pciehp.h
670     index 26ffd3e..2c113de 100644
671     --- a/drivers/pci/hotplug/pciehp.h
672     +++ b/drivers/pci/hotplug/pciehp.h
673     @@ -44,7 +44,6 @@ extern bool pciehp_poll_mode;
674     extern int pciehp_poll_time;
675     extern bool pciehp_debug;
676     extern bool pciehp_force;
677     -extern struct workqueue_struct *pciehp_wq;
678    
679     #define dbg(format, arg...) \
680     do { \
681     @@ -78,6 +77,7 @@ struct slot {
682     struct hotplug_slot *hotplug_slot;
683     struct delayed_work work; /* work for button event */
684     struct mutex lock;
685     + struct workqueue_struct *wq;
686     };
687    
688     struct event_info {
689     diff --git a/drivers/pci/hotplug/pciehp_core.c b/drivers/pci/hotplug/pciehp_core.c
690     index 916bf4f..939bd1d 100644
691     --- a/drivers/pci/hotplug/pciehp_core.c
692     +++ b/drivers/pci/hotplug/pciehp_core.c
693     @@ -42,7 +42,6 @@ bool pciehp_debug;
694     bool pciehp_poll_mode;
695     int pciehp_poll_time;
696     bool pciehp_force;
697     -struct workqueue_struct *pciehp_wq;
698    
699     #define DRIVER_VERSION "0.4"
700     #define DRIVER_AUTHOR "Dan Zink <dan.zink@compaq.com>, Greg Kroah-Hartman <greg@kroah.com>, Dely Sy <dely.l.sy@intel.com>"
701     @@ -340,18 +339,13 @@ static int __init pcied_init(void)
702     {
703     int retval = 0;
704    
705     - pciehp_wq = alloc_workqueue("pciehp", 0, 0);
706     - if (!pciehp_wq)
707     - return -ENOMEM;
708     -
709     pciehp_firmware_init();
710     retval = pcie_port_service_register(&hpdriver_portdrv);
711     dbg("pcie_port_service_register = %d\n", retval);
712     info(DRIVER_DESC " version: " DRIVER_VERSION "\n");
713     - if (retval) {
714     - destroy_workqueue(pciehp_wq);
715     + if (retval)
716     dbg("Failure to register service\n");
717     - }
718     +
719     return retval;
720     }
721    
722     @@ -359,7 +353,6 @@ static void __exit pcied_cleanup(void)
723     {
724     dbg("unload_pciehpd()\n");
725     pcie_port_service_unregister(&hpdriver_portdrv);
726     - destroy_workqueue(pciehp_wq);
727     info(DRIVER_DESC " version: " DRIVER_VERSION " unloaded\n");
728     }
729    
730     diff --git a/drivers/pci/hotplug/pciehp_ctrl.c b/drivers/pci/hotplug/pciehp_ctrl.c
731     index 27f4429..38f0186 100644
732     --- a/drivers/pci/hotplug/pciehp_ctrl.c
733     +++ b/drivers/pci/hotplug/pciehp_ctrl.c
734     @@ -49,7 +49,7 @@ static int queue_interrupt_event(struct slot *p_slot, u32 event_type)
735     info->p_slot = p_slot;
736     INIT_WORK(&info->work, interrupt_event_handler);
737    
738     - queue_work(pciehp_wq, &info->work);
739     + queue_work(p_slot->wq, &info->work);
740    
741     return 0;
742     }
743     @@ -344,7 +344,7 @@ void pciehp_queue_pushbutton_work(struct work_struct *work)
744     kfree(info);
745     goto out;
746     }
747     - queue_work(pciehp_wq, &info->work);
748     + queue_work(p_slot->wq, &info->work);
749     out:
750     mutex_unlock(&p_slot->lock);
751     }
752     @@ -377,7 +377,7 @@ static void handle_button_press_event(struct slot *p_slot)
753     if (ATTN_LED(ctrl))
754     pciehp_set_attention_status(p_slot, 0);
755    
756     - queue_delayed_work(pciehp_wq, &p_slot->work, 5*HZ);
757     + queue_delayed_work(p_slot->wq, &p_slot->work, 5*HZ);
758     break;
759     case BLINKINGOFF_STATE:
760     case BLINKINGON_STATE:
761     @@ -439,7 +439,7 @@ static void handle_surprise_event(struct slot *p_slot)
762     else
763     p_slot->state = POWERON_STATE;
764    
765     - queue_work(pciehp_wq, &info->work);
766     + queue_work(p_slot->wq, &info->work);
767     }
768    
769     static void interrupt_event_handler(struct work_struct *work)
770     diff --git a/drivers/pci/hotplug/pciehp_hpc.c b/drivers/pci/hotplug/pciehp_hpc.c
771     index 13b2eaf..5127f3f 100644
772     --- a/drivers/pci/hotplug/pciehp_hpc.c
773     +++ b/drivers/pci/hotplug/pciehp_hpc.c
774     @@ -773,23 +773,32 @@ static void pcie_shutdown_notification(struct controller *ctrl)
775     static int pcie_init_slot(struct controller *ctrl)
776     {
777     struct slot *slot;
778     + char name[32];
779    
780     slot = kzalloc(sizeof(*slot), GFP_KERNEL);
781     if (!slot)
782     return -ENOMEM;
783    
784     + snprintf(name, sizeof(name), "pciehp-%u", PSN(ctrl));
785     + slot->wq = alloc_workqueue(name, 0, 0);
786     + if (!slot->wq)
787     + goto abort;
788     +
789     slot->ctrl = ctrl;
790     mutex_init(&slot->lock);
791     INIT_DELAYED_WORK(&slot->work, pciehp_queue_pushbutton_work);
792     ctrl->slot = slot;
793     return 0;
794     +abort:
795     + kfree(slot);
796     + return -ENOMEM;
797     }
798    
799     static void pcie_cleanup_slot(struct controller *ctrl)
800     {
801     struct slot *slot = ctrl->slot;
802     cancel_delayed_work(&slot->work);
803     - flush_workqueue(pciehp_wq);
804     + destroy_workqueue(slot->wq);
805     kfree(slot);
806     }
807    
808     diff --git a/drivers/pci/hotplug/shpchp.h b/drivers/pci/hotplug/shpchp.h
809     index ca64932..b849f995 100644
810     --- a/drivers/pci/hotplug/shpchp.h
811     +++ b/drivers/pci/hotplug/shpchp.h
812     @@ -46,8 +46,6 @@
813     extern bool shpchp_poll_mode;
814     extern int shpchp_poll_time;
815     extern bool shpchp_debug;
816     -extern struct workqueue_struct *shpchp_wq;
817     -extern struct workqueue_struct *shpchp_ordered_wq;
818    
819     #define dbg(format, arg...) \
820     do { \
821     @@ -91,6 +89,7 @@ struct slot {
822     struct list_head slot_list;
823     struct delayed_work work; /* work for button event */
824     struct mutex lock;
825     + struct workqueue_struct *wq;
826     u8 hp_slot;
827     };
828    
829     diff --git a/drivers/pci/hotplug/shpchp_core.c b/drivers/pci/hotplug/shpchp_core.c
830     index b6de307..ea15fdc 100644
831     --- a/drivers/pci/hotplug/shpchp_core.c
832     +++ b/drivers/pci/hotplug/shpchp_core.c
833     @@ -39,8 +39,6 @@
834     bool shpchp_debug;
835     bool shpchp_poll_mode;
836     int shpchp_poll_time;
837     -struct workqueue_struct *shpchp_wq;
838     -struct workqueue_struct *shpchp_ordered_wq;
839    
840     #define DRIVER_VERSION "0.4"
841     #define DRIVER_AUTHOR "Dan Zink <dan.zink@compaq.com>, Greg Kroah-Hartman <greg@kroah.com>, Dely Sy <dely.l.sy@intel.com>"
842     @@ -129,6 +127,14 @@ static int init_slots(struct controller *ctrl)
843     slot->device = ctrl->slot_device_offset + i;
844     slot->hpc_ops = ctrl->hpc_ops;
845     slot->number = ctrl->first_slot + (ctrl->slot_num_inc * i);
846     +
847     + snprintf(name, sizeof(name), "shpchp-%d", slot->number);
848     + slot->wq = alloc_workqueue(name, 0, 0);
849     + if (!slot->wq) {
850     + retval = -ENOMEM;
851     + goto error_info;
852     + }
853     +
854     mutex_init(&slot->lock);
855     INIT_DELAYED_WORK(&slot->work, shpchp_queue_pushbutton_work);
856    
857     @@ -148,7 +154,7 @@ static int init_slots(struct controller *ctrl)
858     if (retval) {
859     ctrl_err(ctrl, "pci_hp_register failed with error %d\n",
860     retval);
861     - goto error_info;
862     + goto error_slotwq;
863     }
864    
865     get_power_status(hotplug_slot, &info->power_status);
866     @@ -160,6 +166,8 @@ static int init_slots(struct controller *ctrl)
867     }
868    
869     return 0;
870     +error_slotwq:
871     + destroy_workqueue(slot->wq);
872     error_info:
873     kfree(info);
874     error_hpslot:
875     @@ -180,8 +188,7 @@ void cleanup_slots(struct controller *ctrl)
876     slot = list_entry(tmp, struct slot, slot_list);
877     list_del(&slot->slot_list);
878     cancel_delayed_work(&slot->work);
879     - flush_workqueue(shpchp_wq);
880     - flush_workqueue(shpchp_ordered_wq);
881     + destroy_workqueue(slot->wq);
882     pci_hp_deregister(slot->hotplug_slot);
883     }
884     }
885     @@ -364,25 +371,11 @@ static struct pci_driver shpc_driver = {
886    
887     static int __init shpcd_init(void)
888     {
889     - int retval = 0;
890     -
891     - shpchp_wq = alloc_ordered_workqueue("shpchp", 0);
892     - if (!shpchp_wq)
893     - return -ENOMEM;
894     -
895     - shpchp_ordered_wq = alloc_ordered_workqueue("shpchp_ordered", 0);
896     - if (!shpchp_ordered_wq) {
897     - destroy_workqueue(shpchp_wq);
898     - return -ENOMEM;
899     - }
900     + int retval;
901    
902     retval = pci_register_driver(&shpc_driver);
903     dbg("%s: pci_register_driver = %d\n", __func__, retval);
904     info(DRIVER_DESC " version: " DRIVER_VERSION "\n");
905     - if (retval) {
906     - destroy_workqueue(shpchp_ordered_wq);
907     - destroy_workqueue(shpchp_wq);
908     - }
909     return retval;
910     }
911    
912     @@ -390,8 +383,6 @@ static void __exit shpcd_cleanup(void)
913     {
914     dbg("unload_shpchpd()\n");
915     pci_unregister_driver(&shpc_driver);
916     - destroy_workqueue(shpchp_ordered_wq);
917     - destroy_workqueue(shpchp_wq);
918     info(DRIVER_DESC " version: " DRIVER_VERSION " unloaded\n");
919     }
920    
921     diff --git a/drivers/pci/hotplug/shpchp_ctrl.c b/drivers/pci/hotplug/shpchp_ctrl.c
922     index f9b5a52..5849927 100644
923     --- a/drivers/pci/hotplug/shpchp_ctrl.c
924     +++ b/drivers/pci/hotplug/shpchp_ctrl.c
925     @@ -51,7 +51,7 @@ static int queue_interrupt_event(struct slot *p_slot, u32 event_type)
926     info->p_slot = p_slot;
927     INIT_WORK(&info->work, interrupt_event_handler);
928    
929     - queue_work(shpchp_wq, &info->work);
930     + queue_work(p_slot->wq, &info->work);
931    
932     return 0;
933     }
934     @@ -453,7 +453,7 @@ void shpchp_queue_pushbutton_work(struct work_struct *work)
935     kfree(info);
936     goto out;
937     }
938     - queue_work(shpchp_ordered_wq, &info->work);
939     + queue_work(p_slot->wq, &info->work);
940     out:
941     mutex_unlock(&p_slot->lock);
942     }
943     @@ -501,7 +501,7 @@ static void handle_button_press_event(struct slot *p_slot)
944     p_slot->hpc_ops->green_led_blink(p_slot);
945     p_slot->hpc_ops->set_attention_status(p_slot, 0);
946    
947     - queue_delayed_work(shpchp_wq, &p_slot->work, 5*HZ);
948     + queue_delayed_work(p_slot->wq, &p_slot->work, 5*HZ);
949     break;
950     case BLINKINGOFF_STATE:
951     case BLINKINGON_STATE:
952     diff --git a/drivers/pci/pcie/aer/aerdrv_core.c b/drivers/pci/pcie/aer/aerdrv_core.c
953     index af4e31c..43caf53 100644
954     --- a/drivers/pci/pcie/aer/aerdrv_core.c
955     +++ b/drivers/pci/pcie/aer/aerdrv_core.c
956     @@ -616,6 +616,7 @@ static void aer_recover_work_func(struct work_struct *work)
957     continue;
958     }
959     do_recovery(pdev, entry.severity);
960     + pci_dev_put(pdev);
961     }
962     }
963     #endif
964     diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c
965     index 213753b..449f257 100644
966     --- a/drivers/pci/pcie/aspm.c
967     +++ b/drivers/pci/pcie/aspm.c
968     @@ -773,6 +773,9 @@ void pcie_clear_aspm(struct pci_bus *bus)
969     {
970     struct pci_dev *child;
971    
972     + if (aspm_force)
973     + return;
974     +
975     /*
976     * Clear any ASPM setup that the firmware has carried out on this bus
977     */
978     diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
979     index 352bc77..a45e12a 100644
980     --- a/drivers/scsi/sd.c
981     +++ b/drivers/scsi/sd.c
982     @@ -3116,10 +3116,6 @@ static int __init init_sd(void)
983     if (err)
984     goto err_out;
985    
986     - err = scsi_register_driver(&sd_template.gendrv);
987     - if (err)
988     - goto err_out_class;
989     -
990     sd_cdb_cache = kmem_cache_create("sd_ext_cdb", SD_EXT_CDB_SIZE,
991     0, 0, NULL);
992     if (!sd_cdb_cache) {
993     @@ -3133,8 +3129,15 @@ static int __init init_sd(void)
994     goto err_out_cache;
995     }
996    
997     + err = scsi_register_driver(&sd_template.gendrv);
998     + if (err)
999     + goto err_out_driver;
1000     +
1001     return 0;
1002    
1003     +err_out_driver:
1004     + mempool_destroy(sd_cdb_pool);
1005     +
1006     err_out_cache:
1007     kmem_cache_destroy(sd_cdb_cache);
1008    
1009     @@ -3157,10 +3160,10 @@ static void __exit exit_sd(void)
1010    
1011     SCSI_LOG_HLQUEUE(3, printk("exit_sd: exiting sd driver\n"));
1012    
1013     + scsi_unregister_driver(&sd_template.gendrv);
1014     mempool_destroy(sd_cdb_pool);
1015     kmem_cache_destroy(sd_cdb_cache);
1016    
1017     - scsi_unregister_driver(&sd_template.gendrv);
1018     class_unregister(&sd_disk_class);
1019    
1020     for (i = 0; i < SD_MAJORS; i++)
1021     diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
1022     index 7b7dedd..57f0859 100644
1023     --- a/drivers/usb/dwc3/gadget.c
1024     +++ b/drivers/usb/dwc3/gadget.c
1025     @@ -1605,6 +1605,7 @@ static int __devinit dwc3_gadget_init_endpoints(struct dwc3 *dwc)
1026    
1027     if (epnum == 0 || epnum == 1) {
1028     dep->endpoint.maxpacket = 512;
1029     + dep->endpoint.maxburst = 1;
1030     dep->endpoint.ops = &dwc3_gadget_ep0_ops;
1031     if (!epnum)
1032     dwc->gadget.ep0 = &dep->endpoint;
1033     diff --git a/drivers/usb/gadget/f_fs.c b/drivers/usb/gadget/f_fs.c
1034     index 64c4ec1..7c52ed4 100644
1035     --- a/drivers/usb/gadget/f_fs.c
1036     +++ b/drivers/usb/gadget/f_fs.c
1037     @@ -1153,15 +1153,15 @@ static int ffs_fs_parse_opts(struct ffs_sb_fill_data *data, char *opts)
1038     pr_err("%s: unmapped value: %lu\n", opts, value);
1039     return -EINVAL;
1040     }
1041     - }
1042     - else if (!memcmp(opts, "gid", 3))
1043     + } else if (!memcmp(opts, "gid", 3)) {
1044     data->perms.gid = make_kgid(current_user_ns(), value);
1045     if (!gid_valid(data->perms.gid)) {
1046     pr_err("%s: unmapped value: %lu\n", opts, value);
1047     return -EINVAL;
1048     }
1049     - else
1050     + } else {
1051     goto invalid;
1052     + }
1053     break;
1054    
1055     default:
1056     diff --git a/drivers/usb/host/uhci-hcd.c b/drivers/usb/host/uhci-hcd.c
1057     index 4b9e9ab..4f64d24 100644
1058     --- a/drivers/usb/host/uhci-hcd.c
1059     +++ b/drivers/usb/host/uhci-hcd.c
1060     @@ -447,6 +447,10 @@ static irqreturn_t uhci_irq(struct usb_hcd *hcd)
1061     return IRQ_NONE;
1062     uhci_writew(uhci, status, USBSTS); /* Clear it */
1063    
1064     + spin_lock(&uhci->lock);
1065     + if (unlikely(!uhci->is_initialized)) /* not yet configured */
1066     + goto done;
1067     +
1068     if (status & ~(USBSTS_USBINT | USBSTS_ERROR | USBSTS_RD)) {
1069     if (status & USBSTS_HSE)
1070     dev_err(uhci_dev(uhci), "host system error, "
1071     @@ -455,7 +459,6 @@ static irqreturn_t uhci_irq(struct usb_hcd *hcd)
1072     dev_err(uhci_dev(uhci), "host controller process "
1073     "error, something bad happened!\n");
1074     if (status & USBSTS_HCH) {
1075     - spin_lock(&uhci->lock);
1076     if (uhci->rh_state >= UHCI_RH_RUNNING) {
1077     dev_err(uhci_dev(uhci),
1078     "host controller halted, "
1079     @@ -473,15 +476,15 @@ static irqreturn_t uhci_irq(struct usb_hcd *hcd)
1080     * pending unlinks */
1081     mod_timer(&hcd->rh_timer, jiffies);
1082     }
1083     - spin_unlock(&uhci->lock);
1084     }
1085     }
1086    
1087     - if (status & USBSTS_RD)
1088     + if (status & USBSTS_RD) {
1089     + spin_unlock(&uhci->lock);
1090     usb_hcd_poll_rh_status(hcd);
1091     - else {
1092     - spin_lock(&uhci->lock);
1093     + } else {
1094     uhci_scan_schedule(uhci);
1095     + done:
1096     spin_unlock(&uhci->lock);
1097     }
1098    
1099     @@ -662,9 +665,9 @@ static int uhci_start(struct usb_hcd *hcd)
1100     */
1101     mb();
1102    
1103     + spin_lock_irq(&uhci->lock);
1104     configure_hc(uhci);
1105     uhci->is_initialized = 1;
1106     - spin_lock_irq(&uhci->lock);
1107     start_rh(uhci);
1108     spin_unlock_irq(&uhci->lock);
1109     return 0;
1110     diff --git a/drivers/usb/musb/cppi_dma.c b/drivers/usb/musb/cppi_dma.c
1111     index 3a6c2fd..3d37b5d 100644
1112     --- a/drivers/usb/musb/cppi_dma.c
1113     +++ b/drivers/usb/musb/cppi_dma.c
1114     @@ -105,7 +105,7 @@ static void cppi_reset_tx(struct cppi_tx_stateram __iomem *tx, u32 ptr)
1115     musb_writel(&tx->tx_complete, 0, ptr);
1116     }
1117    
1118     -static void __init cppi_pool_init(struct cppi *cppi, struct cppi_channel *c)
1119     +static void cppi_pool_init(struct cppi *cppi, struct cppi_channel *c)
1120     {
1121     int j;
1122    
1123     @@ -150,7 +150,7 @@ static void cppi_pool_free(struct cppi_channel *c)
1124     c->last_processed = NULL;
1125     }
1126    
1127     -static int __init cppi_controller_start(struct dma_controller *c)
1128     +static int cppi_controller_start(struct dma_controller *c)
1129     {
1130     struct cppi *controller;
1131     void __iomem *tibase;
1132     diff --git a/drivers/vfio/pci/vfio_pci_rdwr.c b/drivers/vfio/pci/vfio_pci_rdwr.c
1133     index 4362d9e..f72323e 100644
1134     --- a/drivers/vfio/pci/vfio_pci_rdwr.c
1135     +++ b/drivers/vfio/pci/vfio_pci_rdwr.c
1136     @@ -240,17 +240,17 @@ ssize_t vfio_pci_mem_readwrite(struct vfio_pci_device *vdev, char __user *buf,
1137     filled = 1;
1138     } else {
1139     /* Drop writes, fill reads with FF */
1140     + filled = min((size_t)(x_end - pos), count);
1141     if (!iswrite) {
1142     char val = 0xFF;
1143     size_t i;
1144    
1145     - for (i = 0; i < x_end - pos; i++) {
1146     + for (i = 0; i < filled; i++) {
1147     if (put_user(val, buf + i))
1148     goto out;
1149     }
1150     }
1151    
1152     - filled = x_end - pos;
1153     }
1154    
1155     count -= filled;
1156     diff --git a/include/linux/ata.h b/include/linux/ata.h
1157     index 408da95..8f7a3d6 100644
1158     --- a/include/linux/ata.h
1159     +++ b/include/linux/ata.h
1160     @@ -297,10 +297,12 @@ enum {
1161     ATA_LOG_SATA_NCQ = 0x10,
1162     ATA_LOG_SATA_ID_DEV_DATA = 0x30,
1163     ATA_LOG_SATA_SETTINGS = 0x08,
1164     - ATA_LOG_DEVSLP_MDAT = 0x30,
1165     + ATA_LOG_DEVSLP_OFFSET = 0x30,
1166     + ATA_LOG_DEVSLP_SIZE = 0x08,
1167     + ATA_LOG_DEVSLP_MDAT = 0x00,
1168     ATA_LOG_DEVSLP_MDAT_MASK = 0x1F,
1169     - ATA_LOG_DEVSLP_DETO = 0x31,
1170     - ATA_LOG_DEVSLP_VALID = 0x37,
1171     + ATA_LOG_DEVSLP_DETO = 0x01,
1172     + ATA_LOG_DEVSLP_VALID = 0x07,
1173     ATA_LOG_DEVSLP_VALID_MASK = 0x80,
1174    
1175     /* READ/WRITE LONG (obsolete) */
1176     diff --git a/include/linux/libata.h b/include/linux/libata.h
1177     index e931c9a..1e36c63 100644
1178     --- a/include/linux/libata.h
1179     +++ b/include/linux/libata.h
1180     @@ -652,8 +652,8 @@ struct ata_device {
1181     u32 gscr[SATA_PMP_GSCR_DWORDS]; /* PMP GSCR block */
1182     };
1183    
1184     - /* Identify Device Data Log (30h), SATA Settings (page 08h) */
1185     - u8 sata_settings[ATA_SECT_SIZE];
1186     + /* DEVSLP Timing Variables from Identify Device Data Log */
1187     + u8 devslp_timing[ATA_LOG_DEVSLP_SIZE];
1188    
1189     /* error history */
1190     int spdn_cnt;
1191     diff --git a/include/linux/module.h b/include/linux/module.h
1192     index 7760c6d..1375ee3 100644
1193     --- a/include/linux/module.h
1194     +++ b/include/linux/module.h
1195     @@ -199,11 +199,11 @@ struct module_use {
1196     struct module *source, *target;
1197     };
1198    
1199     -enum module_state
1200     -{
1201     - MODULE_STATE_LIVE,
1202     - MODULE_STATE_COMING,
1203     - MODULE_STATE_GOING,
1204     +enum module_state {
1205     + MODULE_STATE_LIVE, /* Normal state. */
1206     + MODULE_STATE_COMING, /* Full formed, running module_init. */
1207     + MODULE_STATE_GOING, /* Going away. */
1208     + MODULE_STATE_UNFORMED, /* Still setting it up. */
1209     };
1210    
1211     /**
1212     diff --git a/include/linux/sched.h b/include/linux/sched.h
1213     index 0dd42a0..3e63925 100644
1214     --- a/include/linux/sched.h
1215     +++ b/include/linux/sched.h
1216     @@ -2654,7 +2654,16 @@ static inline void thread_group_cputime_init(struct signal_struct *sig)
1217     extern void recalc_sigpending_and_wake(struct task_struct *t);
1218     extern void recalc_sigpending(void);
1219    
1220     -extern void signal_wake_up(struct task_struct *t, int resume_stopped);
1221     +extern void signal_wake_up_state(struct task_struct *t, unsigned int state);
1222     +
1223     +static inline void signal_wake_up(struct task_struct *t, bool resume)
1224     +{
1225     + signal_wake_up_state(t, resume ? TASK_WAKEKILL : 0);
1226     +}
1227     +static inline void ptrace_signal_wake_up(struct task_struct *t, bool resume)
1228     +{
1229     + signal_wake_up_state(t, resume ? __TASK_TRACED : 0);
1230     +}
1231    
1232     /*
1233     * Wrappers for p->thread_info->cpu access. No-op on UP.
1234     diff --git a/init/do_mounts_initrd.c b/init/do_mounts_initrd.c
1235     index 5e4ded5..f9acf71 100644
1236     --- a/init/do_mounts_initrd.c
1237     +++ b/init/do_mounts_initrd.c
1238     @@ -36,6 +36,10 @@ __setup("noinitrd", no_initrd);
1239     static int init_linuxrc(struct subprocess_info *info, struct cred *new)
1240     {
1241     sys_unshare(CLONE_FS | CLONE_FILES);
1242     + /* stdin/stdout/stderr for /linuxrc */
1243     + sys_open("/dev/console", O_RDWR, 0);
1244     + sys_dup(0);
1245     + sys_dup(0);
1246     /* move initrd over / and chdir/chroot in initrd root */
1247     sys_chdir("/root");
1248     sys_mount(".", "/", NULL, MS_MOVE, NULL);
1249     diff --git a/init/main.c b/init/main.c
1250     index e33e09d..cd147a9 100644
1251     --- a/init/main.c
1252     +++ b/init/main.c
1253     @@ -800,7 +800,7 @@ static int run_init_process(const char *init_filename)
1254     return kernel_execve(init_filename, argv_init, envp_init);
1255     }
1256    
1257     -static void __init kernel_init_freeable(void);
1258     +static noinline void __init kernel_init_freeable(void);
1259    
1260     static int __ref kernel_init(void *unused)
1261     {
1262     @@ -844,7 +844,7 @@ static int __ref kernel_init(void *unused)
1263     "See Linux Documentation/init.txt for guidance.");
1264     }
1265    
1266     -static void __init kernel_init_freeable(void)
1267     +static noinline void __init kernel_init_freeable(void)
1268     {
1269     /*
1270     * Wait until kthreadd is all set-up.
1271     diff --git a/kernel/async.c b/kernel/async.c
1272     index 9d31183..8f9f5cf 100644
1273     --- a/kernel/async.c
1274     +++ b/kernel/async.c
1275     @@ -86,18 +86,27 @@ static atomic_t entry_count;
1276     */
1277     static async_cookie_t __lowest_in_progress(struct async_domain *running)
1278     {
1279     + async_cookie_t first_running = next_cookie; /* infinity value */
1280     + async_cookie_t first_pending = next_cookie; /* ditto */
1281     struct async_entry *entry;
1282    
1283     + /*
1284     + * Both running and pending lists are sorted but not disjoint.
1285     + * Take the first cookies from both and return the min.
1286     + */
1287     if (!list_empty(&running->domain)) {
1288     entry = list_first_entry(&running->domain, typeof(*entry), list);
1289     - return entry->cookie;
1290     + first_running = entry->cookie;
1291     }
1292    
1293     - list_for_each_entry(entry, &async_pending, list)
1294     - if (entry->running == running)
1295     - return entry->cookie;
1296     + list_for_each_entry(entry, &async_pending, list) {
1297     + if (entry->running == running) {
1298     + first_pending = entry->cookie;
1299     + break;
1300     + }
1301     + }
1302    
1303     - return next_cookie; /* "infinity" value */
1304     + return min(first_running, first_pending);
1305     }
1306    
1307     static async_cookie_t lowest_in_progress(struct async_domain *running)
1308     @@ -118,13 +127,17 @@ static void async_run_entry_fn(struct work_struct *work)
1309     {
1310     struct async_entry *entry =
1311     container_of(work, struct async_entry, work);
1312     + struct async_entry *pos;
1313     unsigned long flags;
1314     ktime_t uninitialized_var(calltime), delta, rettime;
1315     struct async_domain *running = entry->running;
1316    
1317     - /* 1) move self to the running queue */
1318     + /* 1) move self to the running queue, make sure it stays sorted */
1319     spin_lock_irqsave(&async_lock, flags);
1320     - list_move_tail(&entry->list, &running->domain);
1321     + list_for_each_entry_reverse(pos, &running->domain, list)
1322     + if (entry->cookie < pos->cookie)
1323     + break;
1324     + list_move_tail(&entry->list, &pos->list);
1325     spin_unlock_irqrestore(&async_lock, flags);
1326    
1327     /* 2) run (and print duration) */
1328     diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c
1329     index 4d5f8d5..8875254 100644
1330     --- a/kernel/debug/kdb/kdb_main.c
1331     +++ b/kernel/debug/kdb/kdb_main.c
1332     @@ -1970,6 +1970,8 @@ static int kdb_lsmod(int argc, const char **argv)
1333    
1334     kdb_printf("Module Size modstruct Used by\n");
1335     list_for_each_entry(mod, kdb_modules, list) {
1336     + if (mod->state == MODULE_STATE_UNFORMED)
1337     + continue;
1338    
1339     kdb_printf("%-20s%8u 0x%p ", mod->name,
1340     mod->core_size, (void *)mod);
1341     diff --git a/kernel/module.c b/kernel/module.c
1342     index 6e48c3a..3e544f4 100644
1343     --- a/kernel/module.c
1344     +++ b/kernel/module.c
1345     @@ -185,6 +185,7 @@ struct load_info {
1346     ongoing or failed initialization etc. */
1347     static inline int strong_try_module_get(struct module *mod)
1348     {
1349     + BUG_ON(mod && mod->state == MODULE_STATE_UNFORMED);
1350     if (mod && mod->state == MODULE_STATE_COMING)
1351     return -EBUSY;
1352     if (try_module_get(mod))
1353     @@ -340,6 +341,9 @@ bool each_symbol_section(bool (*fn)(const struct symsearch *arr,
1354     #endif
1355     };
1356    
1357     + if (mod->state == MODULE_STATE_UNFORMED)
1358     + continue;
1359     +
1360     if (each_symbol_in_section(arr, ARRAY_SIZE(arr), mod, fn, data))
1361     return true;
1362     }
1363     @@ -450,16 +454,24 @@ const struct kernel_symbol *find_symbol(const char *name,
1364     EXPORT_SYMBOL_GPL(find_symbol);
1365    
1366     /* Search for module by name: must hold module_mutex. */
1367     -struct module *find_module(const char *name)
1368     +static struct module *find_module_all(const char *name,
1369     + bool even_unformed)
1370     {
1371     struct module *mod;
1372    
1373     list_for_each_entry(mod, &modules, list) {
1374     + if (!even_unformed && mod->state == MODULE_STATE_UNFORMED)
1375     + continue;
1376     if (strcmp(mod->name, name) == 0)
1377     return mod;
1378     }
1379     return NULL;
1380     }
1381     +
1382     +struct module *find_module(const char *name)
1383     +{
1384     + return find_module_all(name, false);
1385     +}
1386     EXPORT_SYMBOL_GPL(find_module);
1387    
1388     #ifdef CONFIG_SMP
1389     @@ -525,6 +537,8 @@ bool is_module_percpu_address(unsigned long addr)
1390     preempt_disable();
1391    
1392     list_for_each_entry_rcu(mod, &modules, list) {
1393     + if (mod->state == MODULE_STATE_UNFORMED)
1394     + continue;
1395     if (!mod->percpu_size)
1396     continue;
1397     for_each_possible_cpu(cpu) {
1398     @@ -1048,6 +1062,8 @@ static ssize_t show_initstate(struct module_attribute *mattr,
1399     case MODULE_STATE_GOING:
1400     state = "going";
1401     break;
1402     + default:
1403     + BUG();
1404     }
1405     return sprintf(buffer, "%s\n", state);
1406     }
1407     @@ -1786,6 +1802,8 @@ void set_all_modules_text_rw(void)
1408    
1409     mutex_lock(&module_mutex);
1410     list_for_each_entry_rcu(mod, &modules, list) {
1411     + if (mod->state == MODULE_STATE_UNFORMED)
1412     + continue;
1413     if ((mod->module_core) && (mod->core_text_size)) {
1414     set_page_attributes(mod->module_core,
1415     mod->module_core + mod->core_text_size,
1416     @@ -1807,6 +1825,8 @@ void set_all_modules_text_ro(void)
1417    
1418     mutex_lock(&module_mutex);
1419     list_for_each_entry_rcu(mod, &modules, list) {
1420     + if (mod->state == MODULE_STATE_UNFORMED)
1421     + continue;
1422     if ((mod->module_core) && (mod->core_text_size)) {
1423     set_page_attributes(mod->module_core,
1424     mod->module_core + mod->core_text_size,
1425     @@ -2938,8 +2958,9 @@ static bool finished_loading(const char *name)
1426     bool ret;
1427    
1428     mutex_lock(&module_mutex);
1429     - mod = find_module(name);
1430     - ret = !mod || mod->state != MODULE_STATE_COMING;
1431     + mod = find_module_all(name, true);
1432     + ret = !mod || mod->state == MODULE_STATE_LIVE
1433     + || mod->state == MODULE_STATE_GOING;
1434     mutex_unlock(&module_mutex);
1435    
1436     return ret;
1437     @@ -2970,6 +2991,32 @@ static struct module *load_module(void __user *umod,
1438     goto free_copy;
1439     }
1440    
1441     + /*
1442     + * We try to place it in the list now to make sure it's unique
1443     + * before we dedicate too many resources. In particular,
1444     + * temporary percpu memory exhaustion.
1445     + */
1446     + mod->state = MODULE_STATE_UNFORMED;
1447     +again:
1448     + mutex_lock(&module_mutex);
1449     + if ((old = find_module_all(mod->name, true)) != NULL) {
1450     + if (old->state == MODULE_STATE_COMING
1451     + || old->state == MODULE_STATE_UNFORMED) {
1452     + /* Wait in case it fails to load. */
1453     + mutex_unlock(&module_mutex);
1454     + err = wait_event_interruptible(module_wq,
1455     + finished_loading(mod->name));
1456     + if (err)
1457     + goto free_module;
1458     + goto again;
1459     + }
1460     + err = -EEXIST;
1461     + mutex_unlock(&module_mutex);
1462     + goto free_module;
1463     + }
1464     + list_add_rcu(&mod->list, &modules);
1465     + mutex_unlock(&module_mutex);
1466     +
1467     #ifdef CONFIG_MODULE_SIG
1468     mod->sig_ok = info.sig_ok;
1469     if (!mod->sig_ok)
1470     @@ -2979,7 +3026,7 @@ static struct module *load_module(void __user *umod,
1471     /* Now module is in final location, initialize linked lists, etc. */
1472     err = module_unload_init(mod);
1473     if (err)
1474     - goto free_module;
1475     + goto unlink_mod;
1476    
1477     /* Now we've got everything in the final locations, we can
1478     * find optional sections. */
1479     @@ -3014,54 +3061,33 @@ static struct module *load_module(void __user *umod,
1480     goto free_arch_cleanup;
1481     }
1482    
1483     - /* Mark state as coming so strong_try_module_get() ignores us. */
1484     - mod->state = MODULE_STATE_COMING;
1485     -
1486     - /* Now sew it into the lists so we can get lockdep and oops
1487     - * info during argument parsing. No one should access us, since
1488     - * strong_try_module_get() will fail.
1489     - * lockdep/oops can run asynchronous, so use the RCU list insertion
1490     - * function to insert in a way safe to concurrent readers.
1491     - * The mutex protects against concurrent writers.
1492     - */
1493     -again:
1494     - mutex_lock(&module_mutex);
1495     - if ((old = find_module(mod->name)) != NULL) {
1496     - if (old->state == MODULE_STATE_COMING) {
1497     - /* Wait in case it fails to load. */
1498     - mutex_unlock(&module_mutex);
1499     - err = wait_event_interruptible(module_wq,
1500     - finished_loading(mod->name));
1501     - if (err)
1502     - goto free_arch_cleanup;
1503     - goto again;
1504     - }
1505     - err = -EEXIST;
1506     - goto unlock;
1507     - }
1508     -
1509     - /* This has to be done once we're sure module name is unique. */
1510     dynamic_debug_setup(info.debug, info.num_debug);
1511    
1512     - /* Find duplicate symbols */
1513     + mutex_lock(&module_mutex);
1514     + /* Find duplicate symbols (must be called under lock). */
1515     err = verify_export_symbols(mod);
1516     if (err < 0)
1517     - goto ddebug;
1518     + goto ddebug_cleanup;
1519    
1520     + /* This relies on module_mutex for list integrity. */
1521     module_bug_finalize(info.hdr, info.sechdrs, mod);
1522     - list_add_rcu(&mod->list, &modules);
1523     +
1524     + /* Mark state as coming so strong_try_module_get() ignores us,
1525     + * but kallsyms etc. can see us. */
1526     + mod->state = MODULE_STATE_COMING;
1527     +
1528     mutex_unlock(&module_mutex);
1529    
1530     /* Module is ready to execute: parsing args may do that. */
1531     err = parse_args(mod->name, mod->args, mod->kp, mod->num_kp,
1532     -32768, 32767, &ddebug_dyndbg_module_param_cb);
1533     if (err < 0)
1534     - goto unlink;
1535     + goto bug_cleanup;
1536    
1537     /* Link in to syfs. */
1538     err = mod_sysfs_setup(mod, &info, mod->kp, mod->num_kp);
1539     if (err < 0)
1540     - goto unlink;
1541     + goto bug_cleanup;
1542    
1543     /* Get rid of temporary copy. */
1544     free_copy(&info);
1545     @@ -3070,16 +3096,13 @@ again:
1546     trace_module_load(mod);
1547     return mod;
1548    
1549     - unlink:
1550     + bug_cleanup:
1551     + /* module_bug_cleanup needs module_mutex protection */
1552     mutex_lock(&module_mutex);
1553     - /* Unlink carefully: kallsyms could be walking list. */
1554     - list_del_rcu(&mod->list);
1555     module_bug_cleanup(mod);
1556     - wake_up_all(&module_wq);
1557     - ddebug:
1558     - dynamic_debug_remove(info.debug);
1559     - unlock:
1560     + ddebug_cleanup:
1561     mutex_unlock(&module_mutex);
1562     + dynamic_debug_remove(info.debug);
1563     synchronize_sched();
1564     kfree(mod->args);
1565     free_arch_cleanup:
1566     @@ -3088,6 +3111,12 @@ again:
1567     free_modinfo(mod);
1568     free_unload:
1569     module_unload_free(mod);
1570     + unlink_mod:
1571     + mutex_lock(&module_mutex);
1572     + /* Unlink carefully: kallsyms could be walking list. */
1573     + list_del_rcu(&mod->list);
1574     + wake_up_all(&module_wq);
1575     + mutex_unlock(&module_mutex);
1576     free_module:
1577     module_deallocate(mod, &info);
1578     free_copy:
1579     @@ -3264,6 +3293,8 @@ const char *module_address_lookup(unsigned long addr,
1580    
1581     preempt_disable();
1582     list_for_each_entry_rcu(mod, &modules, list) {
1583     + if (mod->state == MODULE_STATE_UNFORMED)
1584     + continue;
1585     if (within_module_init(addr, mod) ||
1586     within_module_core(addr, mod)) {
1587     if (modname)
1588     @@ -3287,6 +3318,8 @@ int lookup_module_symbol_name(unsigned long addr, char *symname)
1589    
1590     preempt_disable();
1591     list_for_each_entry_rcu(mod, &modules, list) {
1592     + if (mod->state == MODULE_STATE_UNFORMED)
1593     + continue;
1594     if (within_module_init(addr, mod) ||
1595     within_module_core(addr, mod)) {
1596     const char *sym;
1597     @@ -3311,6 +3344,8 @@ int lookup_module_symbol_attrs(unsigned long addr, unsigned long *size,
1598    
1599     preempt_disable();
1600     list_for_each_entry_rcu(mod, &modules, list) {
1601     + if (mod->state == MODULE_STATE_UNFORMED)
1602     + continue;
1603     if (within_module_init(addr, mod) ||
1604     within_module_core(addr, mod)) {
1605     const char *sym;
1606     @@ -3338,6 +3373,8 @@ int module_get_kallsym(unsigned int symnum, unsigned long *value, char *type,
1607    
1608     preempt_disable();
1609     list_for_each_entry_rcu(mod, &modules, list) {
1610     + if (mod->state == MODULE_STATE_UNFORMED)
1611     + continue;
1612     if (symnum < mod->num_symtab) {
1613     *value = mod->symtab[symnum].st_value;
1614     *type = mod->symtab[symnum].st_info;
1615     @@ -3380,9 +3417,12 @@ unsigned long module_kallsyms_lookup_name(const char *name)
1616     ret = mod_find_symname(mod, colon+1);
1617     *colon = ':';
1618     } else {
1619     - list_for_each_entry_rcu(mod, &modules, list)
1620     + list_for_each_entry_rcu(mod, &modules, list) {
1621     + if (mod->state == MODULE_STATE_UNFORMED)
1622     + continue;
1623     if ((ret = mod_find_symname(mod, name)) != 0)
1624     break;
1625     + }
1626     }
1627     preempt_enable();
1628     return ret;
1629     @@ -3397,6 +3437,8 @@ int module_kallsyms_on_each_symbol(int (*fn)(void *, const char *,
1630     int ret;
1631    
1632     list_for_each_entry(mod, &modules, list) {
1633     + if (mod->state == MODULE_STATE_UNFORMED)
1634     + continue;
1635     for (i = 0; i < mod->num_symtab; i++) {
1636     ret = fn(data, mod->strtab + mod->symtab[i].st_name,
1637     mod, mod->symtab[i].st_value);
1638     @@ -3412,6 +3454,7 @@ static char *module_flags(struct module *mod, char *buf)
1639     {
1640     int bx = 0;
1641    
1642     + BUG_ON(mod->state == MODULE_STATE_UNFORMED);
1643     if (mod->taints ||
1644     mod->state == MODULE_STATE_GOING ||
1645     mod->state == MODULE_STATE_COMING) {
1646     @@ -3453,6 +3496,10 @@ static int m_show(struct seq_file *m, void *p)
1647     struct module *mod = list_entry(p, struct module, list);
1648     char buf[8];
1649    
1650     + /* We always ignore unformed modules. */
1651     + if (mod->state == MODULE_STATE_UNFORMED)
1652     + return 0;
1653     +
1654     seq_printf(m, "%s %u",
1655     mod->name, mod->init_size + mod->core_size);
1656     print_unload_info(m, mod);
1657     @@ -3513,6 +3560,8 @@ const struct exception_table_entry *search_module_extables(unsigned long addr)
1658    
1659     preempt_disable();
1660     list_for_each_entry_rcu(mod, &modules, list) {
1661     + if (mod->state == MODULE_STATE_UNFORMED)
1662     + continue;
1663     if (mod->num_exentries == 0)
1664     continue;
1665    
1666     @@ -3561,10 +3610,13 @@ struct module *__module_address(unsigned long addr)
1667     if (addr < module_addr_min || addr > module_addr_max)
1668     return NULL;
1669    
1670     - list_for_each_entry_rcu(mod, &modules, list)
1671     + list_for_each_entry_rcu(mod, &modules, list) {
1672     + if (mod->state == MODULE_STATE_UNFORMED)
1673     + continue;
1674     if (within_module_core(addr, mod)
1675     || within_module_init(addr, mod))
1676     return mod;
1677     + }
1678     return NULL;
1679     }
1680     EXPORT_SYMBOL_GPL(__module_address);
1681     @@ -3617,8 +3669,11 @@ void print_modules(void)
1682     printk(KERN_DEFAULT "Modules linked in:");
1683     /* Most callers should already have preempt disabled, but make sure */
1684     preempt_disable();
1685     - list_for_each_entry_rcu(mod, &modules, list)
1686     + list_for_each_entry_rcu(mod, &modules, list) {
1687     + if (mod->state == MODULE_STATE_UNFORMED)
1688     + continue;
1689     printk(" %s%s", mod->name, module_flags(mod, buf));
1690     + }
1691     preempt_enable();
1692     if (last_unloaded_module[0])
1693     printk(" [last unloaded: %s]", last_unloaded_module);
1694     diff --git a/kernel/ptrace.c b/kernel/ptrace.c
1695     index 1f5e55d..fbea91d 100644
1696     --- a/kernel/ptrace.c
1697     +++ b/kernel/ptrace.c
1698     @@ -117,11 +117,45 @@ void __ptrace_unlink(struct task_struct *child)
1699     * TASK_KILLABLE sleeps.
1700     */
1701     if (child->jobctl & JOBCTL_STOP_PENDING || task_is_traced(child))
1702     - signal_wake_up(child, task_is_traced(child));
1703     + ptrace_signal_wake_up(child, true);
1704    
1705     spin_unlock(&child->sighand->siglock);
1706     }
1707    
1708     +/* Ensure that nothing can wake it up, even SIGKILL */
1709     +static bool ptrace_freeze_traced(struct task_struct *task)
1710     +{
1711     + bool ret = false;
1712     +
1713     + /* Lockless, nobody but us can set this flag */
1714     + if (task->jobctl & JOBCTL_LISTENING)
1715     + return ret;
1716     +
1717     + spin_lock_irq(&task->sighand->siglock);
1718     + if (task_is_traced(task) && !__fatal_signal_pending(task)) {
1719     + task->state = __TASK_TRACED;
1720     + ret = true;
1721     + }
1722     + spin_unlock_irq(&task->sighand->siglock);
1723     +
1724     + return ret;
1725     +}
1726     +
1727     +static void ptrace_unfreeze_traced(struct task_struct *task)
1728     +{
1729     + if (task->state != __TASK_TRACED)
1730     + return;
1731     +
1732     + WARN_ON(!task->ptrace || task->parent != current);
1733     +
1734     + spin_lock_irq(&task->sighand->siglock);
1735     + if (__fatal_signal_pending(task))
1736     + wake_up_state(task, __TASK_TRACED);
1737     + else
1738     + task->state = TASK_TRACED;
1739     + spin_unlock_irq(&task->sighand->siglock);
1740     +}
1741     +
1742     /**
1743     * ptrace_check_attach - check whether ptracee is ready for ptrace operation
1744     * @child: ptracee to check for
1745     @@ -151,24 +185,29 @@ int ptrace_check_attach(struct task_struct *child, bool ignore_state)
1746     * be changed by us so it's not changing right after this.
1747     */
1748     read_lock(&tasklist_lock);
1749     - if ((child->ptrace & PT_PTRACED) && child->parent == current) {
1750     + if (child->ptrace && child->parent == current) {
1751     + WARN_ON(child->state == __TASK_TRACED);
1752     /*
1753     * child->sighand can't be NULL, release_task()
1754     * does ptrace_unlink() before __exit_signal().
1755     */
1756     - spin_lock_irq(&child->sighand->siglock);
1757     - WARN_ON_ONCE(task_is_stopped(child));
1758     - if (ignore_state || (task_is_traced(child) &&
1759     - !(child->jobctl & JOBCTL_LISTENING)))
1760     + if (ignore_state || ptrace_freeze_traced(child))
1761     ret = 0;
1762     - spin_unlock_irq(&child->sighand->siglock);
1763     }
1764     read_unlock(&tasklist_lock);
1765    
1766     - if (!ret && !ignore_state)
1767     - ret = wait_task_inactive(child, TASK_TRACED) ? 0 : -ESRCH;
1768     + if (!ret && !ignore_state) {
1769     + if (!wait_task_inactive(child, __TASK_TRACED)) {
1770     + /*
1771     + * This can only happen if may_ptrace_stop() fails and
1772     + * ptrace_stop() changes ->state back to TASK_RUNNING,
1773     + * so we should not worry about leaking __TASK_TRACED.
1774     + */
1775     + WARN_ON(child->state == __TASK_TRACED);
1776     + ret = -ESRCH;
1777     + }
1778     + }
1779    
1780     - /* All systems go.. */
1781     return ret;
1782     }
1783    
1784     @@ -311,7 +350,7 @@ static int ptrace_attach(struct task_struct *task, long request,
1785     */
1786     if (task_is_stopped(task) &&
1787     task_set_jobctl_pending(task, JOBCTL_TRAP_STOP | JOBCTL_TRAPPING))
1788     - signal_wake_up(task, 1);
1789     + signal_wake_up_state(task, __TASK_STOPPED);
1790    
1791     spin_unlock(&task->sighand->siglock);
1792    
1793     @@ -728,7 +767,7 @@ int ptrace_request(struct task_struct *child, long request,
1794     * tracee into STOP.
1795     */
1796     if (likely(task_set_jobctl_pending(child, JOBCTL_TRAP_STOP)))
1797     - signal_wake_up(child, child->jobctl & JOBCTL_LISTENING);
1798     + ptrace_signal_wake_up(child, child->jobctl & JOBCTL_LISTENING);
1799    
1800     unlock_task_sighand(child, &flags);
1801     ret = 0;
1802     @@ -754,7 +793,7 @@ int ptrace_request(struct task_struct *child, long request,
1803     * start of this trap and now. Trigger re-trap.
1804     */
1805     if (child->jobctl & JOBCTL_TRAP_NOTIFY)
1806     - signal_wake_up(child, true);
1807     + ptrace_signal_wake_up(child, true);
1808     ret = 0;
1809     }
1810     unlock_task_sighand(child, &flags);
1811     @@ -891,6 +930,8 @@ SYSCALL_DEFINE4(ptrace, long, request, long, pid, unsigned long, addr,
1812     goto out_put_task_struct;
1813    
1814     ret = arch_ptrace(child, request, addr, data);
1815     + if (ret || request != PTRACE_DETACH)
1816     + ptrace_unfreeze_traced(child);
1817    
1818     out_put_task_struct:
1819     put_task_struct(child);
1820     @@ -1030,8 +1071,11 @@ asmlinkage long compat_sys_ptrace(compat_long_t request, compat_long_t pid,
1821    
1822     ret = ptrace_check_attach(child, request == PTRACE_KILL ||
1823     request == PTRACE_INTERRUPT);
1824     - if (!ret)
1825     + if (!ret) {
1826     ret = compat_arch_ptrace(child, request, addr, data);
1827     + if (ret || request != PTRACE_DETACH)
1828     + ptrace_unfreeze_traced(child);
1829     + }
1830    
1831     out_put_task_struct:
1832     put_task_struct(child);
1833     diff --git a/kernel/sched/core.c b/kernel/sched/core.c
1834     index 2d8927f..c529d00 100644
1835     --- a/kernel/sched/core.c
1836     +++ b/kernel/sched/core.c
1837     @@ -1497,7 +1497,8 @@ out:
1838     */
1839     int wake_up_process(struct task_struct *p)
1840     {
1841     - return try_to_wake_up(p, TASK_ALL, 0);
1842     + WARN_ON(task_is_stopped_or_traced(p));
1843     + return try_to_wake_up(p, TASK_NORMAL, 0);
1844     }
1845     EXPORT_SYMBOL(wake_up_process);
1846    
1847     diff --git a/kernel/signal.c b/kernel/signal.c
1848     index e4d4014..57dde52 100644
1849     --- a/kernel/signal.c
1850     +++ b/kernel/signal.c
1851     @@ -679,23 +679,17 @@ int dequeue_signal(struct task_struct *tsk, sigset_t *mask, siginfo_t *info)
1852     * No need to set need_resched since signal event passing
1853     * goes through ->blocked
1854     */
1855     -void signal_wake_up(struct task_struct *t, int resume)
1856     +void signal_wake_up_state(struct task_struct *t, unsigned int state)
1857     {
1858     - unsigned int mask;
1859     -
1860     set_tsk_thread_flag(t, TIF_SIGPENDING);
1861     -
1862     /*
1863     - * For SIGKILL, we want to wake it up in the stopped/traced/killable
1864     + * TASK_WAKEKILL also means wake it up in the stopped/traced/killable
1865     * case. We don't check t->state here because there is a race with it
1866     * executing another processor and just now entering stopped state.
1867     * By using wake_up_state, we ensure the process will wake up and
1868     * handle its death signal.
1869     */
1870     - mask = TASK_INTERRUPTIBLE;
1871     - if (resume)
1872     - mask |= TASK_WAKEKILL;
1873     - if (!wake_up_state(t, mask))
1874     + if (!wake_up_state(t, state | TASK_INTERRUPTIBLE))
1875     kick_process(t);
1876     }
1877    
1878     @@ -843,7 +837,7 @@ static void ptrace_trap_notify(struct task_struct *t)
1879     assert_spin_locked(&t->sighand->siglock);
1880    
1881     task_set_jobctl_pending(t, JOBCTL_TRAP_NOTIFY);
1882     - signal_wake_up(t, t->jobctl & JOBCTL_LISTENING);
1883     + ptrace_signal_wake_up(t, t->jobctl & JOBCTL_LISTENING);
1884     }
1885    
1886     /*
1887     @@ -1798,6 +1792,10 @@ static inline int may_ptrace_stop(void)
1888     * If SIGKILL was already sent before the caller unlocked
1889     * ->siglock we must see ->core_state != NULL. Otherwise it
1890     * is safe to enter schedule().
1891     + *
1892     + * This is almost outdated, a task with the pending SIGKILL can't
1893     + * block in TASK_TRACED. But PTRACE_EVENT_EXIT can be reported
1894     + * after SIGKILL was already dequeued.
1895     */
1896     if (unlikely(current->mm->core_state) &&
1897     unlikely(current->mm == current->parent->mm))
1898     @@ -1923,6 +1921,7 @@ static void ptrace_stop(int exit_code, int why, int clear_code, siginfo_t *info)
1899     if (gstop_done)
1900     do_notify_parent_cldstop(current, false, why);
1901    
1902     + /* tasklist protects us from ptrace_freeze_traced() */
1903     __set_current_state(TASK_RUNNING);
1904     if (clear_code)
1905     current->exit_code = 0;
1906     diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
1907     index 51b7159..356bc2f 100644
1908     --- a/kernel/trace/ftrace.c
1909     +++ b/kernel/trace/ftrace.c
1910     @@ -3998,7 +3998,7 @@ static int ftrace_module_notify(struct notifier_block *self,
1911    
1912     struct notifier_block ftrace_module_nb = {
1913     .notifier_call = ftrace_module_notify,
1914     - .priority = 0,
1915     + .priority = INT_MAX, /* Run before anything that can use kprobes */
1916     };
1917    
1918     extern unsigned long __start_mcount_loc[];
1919     diff --git a/lib/bug.c b/lib/bug.c
1920     index a28c141..d0cdf14 100644
1921     --- a/lib/bug.c
1922     +++ b/lib/bug.c
1923     @@ -55,6 +55,7 @@ static inline unsigned long bug_addr(const struct bug_entry *bug)
1924     }
1925    
1926     #ifdef CONFIG_MODULES
1927     +/* Updates are protected by module mutex */
1928     static LIST_HEAD(module_bug_list);
1929    
1930     static const struct bug_entry *module_find_bug(unsigned long bugaddr)
1931     diff --git a/security/integrity/evm/evm_crypto.c b/security/integrity/evm/evm_crypto.c
1932     index dfb2691..7dd538e 100644
1933     --- a/security/integrity/evm/evm_crypto.c
1934     +++ b/security/integrity/evm/evm_crypto.c
1935     @@ -205,9 +205,9 @@ int evm_update_evmxattr(struct dentry *dentry, const char *xattr_name,
1936     rc = __vfs_setxattr_noperm(dentry, XATTR_NAME_EVM,
1937     &xattr_data,
1938     sizeof(xattr_data), 0);
1939     - }
1940     - else if (rc == -ENODATA)
1941     + } else if (rc == -ENODATA && inode->i_op->removexattr) {
1942     rc = inode->i_op->removexattr(dentry, XATTR_NAME_EVM);
1943     + }
1944     return rc;
1945     }
1946    
1947     diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c
1948     index 8799cf1..63a6801 100644
1949     --- a/sound/pci/hda/patch_conexant.c
1950     +++ b/sound/pci/hda/patch_conexant.c
1951     @@ -4580,6 +4580,12 @@ static const struct hda_codec_preset snd_hda_preset_conexant[] = {
1952     .patch = patch_conexant_auto },
1953     { .id = 0x14f15111, .name = "CX20753/4",
1954     .patch = patch_conexant_auto },
1955     + { .id = 0x14f15113, .name = "CX20755",
1956     + .patch = patch_conexant_auto },
1957     + { .id = 0x14f15114, .name = "CX20756",
1958     + .patch = patch_conexant_auto },
1959     + { .id = 0x14f15115, .name = "CX20757",
1960     + .patch = patch_conexant_auto },
1961     {} /* terminator */
1962     };
1963    
1964     @@ -4603,6 +4609,9 @@ MODULE_ALIAS("snd-hda-codec-id:14f150b9");
1965     MODULE_ALIAS("snd-hda-codec-id:14f1510f");
1966     MODULE_ALIAS("snd-hda-codec-id:14f15110");
1967     MODULE_ALIAS("snd-hda-codec-id:14f15111");
1968     +MODULE_ALIAS("snd-hda-codec-id:14f15113");
1969     +MODULE_ALIAS("snd-hda-codec-id:14f15114");
1970     +MODULE_ALIAS("snd-hda-codec-id:14f15115");
1971    
1972     MODULE_LICENSE("GPL");
1973     MODULE_DESCRIPTION("Conexant HD-audio codec");
1974     diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
1975     index 4bbabdc..bbaf67c 100644
1976     --- a/sound/pci/hda/patch_realtek.c
1977     +++ b/sound/pci/hda/patch_realtek.c
1978     @@ -6211,6 +6211,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
1979     SND_PCI_QUIRK(0x1025, 0x0349, "Acer AOD260", ALC269_FIXUP_INV_DMIC),
1980     SND_PCI_QUIRK(0x103c, 0x1586, "HP", ALC269_FIXUP_MIC2_MUTE_LED),
1981     SND_PCI_QUIRK(0x103c, 0x1972, "HP Pavilion 17", ALC269_FIXUP_MIC1_MUTE_LED),
1982     + SND_PCI_QUIRK(0x103c, 0x1977, "HP Pavilion 14", ALC269_FIXUP_MIC1_MUTE_LED),
1983     SND_PCI_QUIRK(0x1043, 0x1427, "Asus Zenbook UX31E", ALC269VB_FIXUP_DMIC),
1984     SND_PCI_QUIRK(0x1043, 0x1517, "Asus Zenbook UX31A", ALC269VB_FIXUP_DMIC),
1985     SND_PCI_QUIRK(0x1043, 0x1a13, "Asus G73Jw", ALC269_FIXUP_ASUS_G73JW),
1986     diff --git a/tools/perf/Makefile b/tools/perf/Makefile
1987     index 0a619af..627849f 100644
1988     --- a/tools/perf/Makefile
1989     +++ b/tools/perf/Makefile
1990     @@ -58,7 +58,7 @@ ARCH ?= $(shell echo $(uname_M) | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \
1991     -e s/arm.*/arm/ -e s/sa110/arm/ \
1992     -e s/s390x/s390/ -e s/parisc64/parisc/ \
1993     -e s/ppc.*/powerpc/ -e s/mips.*/mips/ \
1994     - -e s/sh[234].*/sh/ )
1995     + -e s/sh[234].*/sh/ -e s/aarch64.*/arm64/ )
1996     NO_PERF_REGS := 1
1997    
1998     CC = $(CROSS_COMPILE)gcc