Magellan Linux

Annotation of /trunk/kernel-magellan/patches-3.15/0107-3.15.8-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2488 - (hide annotations) (download)
Thu Aug 7 08:28:06 2014 UTC (9 years, 9 months ago) by niro
File size: 32685 byte(s)
-linux-3.15.8
1 niro 2488 diff --git a/Makefile b/Makefile
2     index 833f67f3f80f..d5d9a22a404a 100644
3     --- a/Makefile
4     +++ b/Makefile
5     @@ -1,8 +1,8 @@
6     VERSION = 3
7     PATCHLEVEL = 15
8     -SUBLEVEL = 7
9     +SUBLEVEL = 8
10     EXTRAVERSION =
11     -NAME = Shuffling Zombie Juror
12     +NAME = Double Funky Skunk
13    
14     # *DOCUMENTATION*
15     # To see a list of typical targets execute "make help"
16     @@ -669,6 +669,8 @@ KBUILD_CFLAGS += -fomit-frame-pointer
17     endif
18     endif
19    
20     +KBUILD_CFLAGS += $(call cc-option, -fno-var-tracking-assignments)
21     +
22     ifdef CONFIG_DEBUG_INFO
23     KBUILD_CFLAGS += -g
24     KBUILD_AFLAGS += -Wa,--gdwarf-2
25     diff --git a/arch/parisc/include/uapi/asm/signal.h b/arch/parisc/include/uapi/asm/signal.h
26     index a2fa297196bc..f5645d6a89f2 100644
27     --- a/arch/parisc/include/uapi/asm/signal.h
28     +++ b/arch/parisc/include/uapi/asm/signal.h
29     @@ -69,8 +69,6 @@
30     #define SA_NOMASK SA_NODEFER
31     #define SA_ONESHOT SA_RESETHAND
32    
33     -#define SA_RESTORER 0x04000000 /* obsolete -- ignored */
34     -
35     #define MINSIGSTKSZ 2048
36     #define SIGSTKSZ 8192
37    
38     diff --git a/arch/powerpc/platforms/pseries/dlpar.c b/arch/powerpc/platforms/pseries/dlpar.c
39     index 022b38e6a80b..2d0b4d68a40a 100644
40     --- a/arch/powerpc/platforms/pseries/dlpar.c
41     +++ b/arch/powerpc/platforms/pseries/dlpar.c
42     @@ -86,6 +86,7 @@ static struct device_node *dlpar_parse_cc_node(struct cc_workarea *ccwa,
43     }
44    
45     of_node_set_flag(dn, OF_DYNAMIC);
46     + of_node_init(dn);
47    
48     return dn;
49     }
50     diff --git a/arch/powerpc/platforms/pseries/reconfig.c b/arch/powerpc/platforms/pseries/reconfig.c
51     index 0435bb65d0aa..1c0a60d98867 100644
52     --- a/arch/powerpc/platforms/pseries/reconfig.c
53     +++ b/arch/powerpc/platforms/pseries/reconfig.c
54     @@ -69,6 +69,7 @@ static int pSeries_reconfig_add_node(const char *path, struct property *proplist
55    
56     np->properties = proplist;
57     of_node_set_flag(np, OF_DYNAMIC);
58     + of_node_init(np);
59    
60     np->parent = derive_parent(path);
61     if (IS_ERR(np->parent)) {
62     diff --git a/arch/s390/kernel/ptrace.c b/arch/s390/kernel/ptrace.c
63     index 1c82619eb4f7..8c390e7a525a 100644
64     --- a/arch/s390/kernel/ptrace.c
65     +++ b/arch/s390/kernel/ptrace.c
66     @@ -334,9 +334,14 @@ static int __poke_user(struct task_struct *child, addr_t addr, addr_t data)
67     unsigned long mask = PSW_MASK_USER;
68    
69     mask |= is_ri_task(child) ? PSW_MASK_RI : 0;
70     - if ((data & ~mask) != PSW_USER_BITS)
71     + if ((data ^ PSW_USER_BITS) & ~mask)
72     + /* Invalid psw mask. */
73     + return -EINVAL;
74     + if ((data & PSW_MASK_ASC) == PSW_ASC_HOME)
75     + /* Invalid address-space-control bits */
76     return -EINVAL;
77     if ((data & PSW_MASK_EA) && !(data & PSW_MASK_BA))
78     + /* Invalid addressing mode bits */
79     return -EINVAL;
80     }
81     *(addr_t *)((addr_t) &task_pt_regs(child)->psw + addr) = data;
82     @@ -672,9 +677,12 @@ static int __poke_user_compat(struct task_struct *child,
83    
84     mask |= is_ri_task(child) ? PSW32_MASK_RI : 0;
85     /* Build a 64 bit psw mask from 31 bit mask. */
86     - if ((tmp & ~mask) != PSW32_USER_BITS)
87     + if ((tmp ^ PSW32_USER_BITS) & ~mask)
88     /* Invalid psw mask. */
89     return -EINVAL;
90     + if ((data & PSW32_MASK_ASC) == PSW32_ASC_HOME)
91     + /* Invalid address-space-control bits */
92     + return -EINVAL;
93     regs->psw.mask = (regs->psw.mask & ~PSW_MASK_USER) |
94     (regs->psw.mask & PSW_MASK_BA) |
95     (__u64)(tmp & mask) << 32;
96     diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S
97     index 6491353cc9aa..c87810b1b557 100644
98     --- a/arch/x86/kernel/entry_32.S
99     +++ b/arch/x86/kernel/entry_32.S
100     @@ -433,8 +433,8 @@ sysenter_do_call:
101     cmpl $(NR_syscalls), %eax
102     jae sysenter_badsys
103     call *sys_call_table(,%eax,4)
104     - movl %eax,PT_EAX(%esp)
105     sysenter_after_call:
106     + movl %eax,PT_EAX(%esp)
107     LOCKDEP_SYS_EXIT
108     DISABLE_INTERRUPTS(CLBR_ANY)
109     TRACE_IRQS_OFF
110     @@ -514,6 +514,7 @@ ENTRY(system_call)
111     jae syscall_badsys
112     syscall_call:
113     call *sys_call_table(,%eax,4)
114     +syscall_after_call:
115     movl %eax,PT_EAX(%esp) # store the return value
116     syscall_exit:
117     LOCKDEP_SYS_EXIT
118     @@ -683,12 +684,12 @@ syscall_fault:
119     END(syscall_fault)
120    
121     syscall_badsys:
122     - movl $-ENOSYS,PT_EAX(%esp)
123     - jmp syscall_exit
124     + movl $-ENOSYS,%eax
125     + jmp syscall_after_call
126     END(syscall_badsys)
127    
128     sysenter_badsys:
129     - movl $-ENOSYS,PT_EAX(%esp)
130     + movl $-ENOSYS,%eax
131     jmp sysenter_after_call
132     END(syscall_badsys)
133     CFI_ENDPROC
134     diff --git a/arch/xtensa/mm/init.c b/arch/xtensa/mm/init.c
135     index 4224256bb215..77ed20209ca5 100644
136     --- a/arch/xtensa/mm/init.c
137     +++ b/arch/xtensa/mm/init.c
138     @@ -191,7 +191,7 @@ int __init mem_reserve(unsigned long start, unsigned long end, int must_exist)
139     return -EINVAL;
140     }
141    
142     - if (it && start - it->start < bank_sz) {
143     + if (it && start - it->start <= bank_sz) {
144     if (start == it->start) {
145     if (end - it->start < bank_sz) {
146     it->start = end;
147     diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c
148     index 95ee425bf7c6..f1e380368372 100644
149     --- a/block/blk-cgroup.c
150     +++ b/block/blk-cgroup.c
151     @@ -872,6 +872,13 @@ void blkcg_drain_queue(struct request_queue *q)
152     {
153     lockdep_assert_held(q->queue_lock);
154    
155     + /*
156     + * @q could be exiting and already have destroyed all blkgs as
157     + * indicated by NULL root_blkg. If so, don't confuse policies.
158     + */
159     + if (!q->root_blkg)
160     + return;
161     +
162     blk_throtl_drain(q);
163     }
164    
165     diff --git a/block/blk-tag.c b/block/blk-tag.c
166     index 3f33d8672268..a185b86741e5 100644
167     --- a/block/blk-tag.c
168     +++ b/block/blk-tag.c
169     @@ -27,18 +27,15 @@ struct request *blk_queue_find_tag(struct request_queue *q, int tag)
170     EXPORT_SYMBOL(blk_queue_find_tag);
171    
172     /**
173     - * __blk_free_tags - release a given set of tag maintenance info
174     + * blk_free_tags - release a given set of tag maintenance info
175     * @bqt: the tag map to free
176     *
177     - * Tries to free the specified @bqt. Returns true if it was
178     - * actually freed and false if there are still references using it
179     + * Drop the reference count on @bqt and frees it when the last reference
180     + * is dropped.
181     */
182     -static int __blk_free_tags(struct blk_queue_tag *bqt)
183     +void blk_free_tags(struct blk_queue_tag *bqt)
184     {
185     - int retval;
186     -
187     - retval = atomic_dec_and_test(&bqt->refcnt);
188     - if (retval) {
189     + if (atomic_dec_and_test(&bqt->refcnt)) {
190     BUG_ON(find_first_bit(bqt->tag_map, bqt->max_depth) <
191     bqt->max_depth);
192    
193     @@ -50,9 +47,8 @@ static int __blk_free_tags(struct blk_queue_tag *bqt)
194    
195     kfree(bqt);
196     }
197     -
198     - return retval;
199     }
200     +EXPORT_SYMBOL(blk_free_tags);
201    
202     /**
203     * __blk_queue_free_tags - release tag maintenance info
204     @@ -69,28 +65,13 @@ void __blk_queue_free_tags(struct request_queue *q)
205     if (!bqt)
206     return;
207    
208     - __blk_free_tags(bqt);
209     + blk_free_tags(bqt);
210    
211     q->queue_tags = NULL;
212     queue_flag_clear_unlocked(QUEUE_FLAG_QUEUED, q);
213     }
214    
215     /**
216     - * blk_free_tags - release a given set of tag maintenance info
217     - * @bqt: the tag map to free
218     - *
219     - * For externally managed @bqt frees the map. Callers of this
220     - * function must guarantee to have released all the queues that
221     - * might have been using this tag map.
222     - */
223     -void blk_free_tags(struct blk_queue_tag *bqt)
224     -{
225     - if (unlikely(!__blk_free_tags(bqt)))
226     - BUG();
227     -}
228     -EXPORT_SYMBOL(blk_free_tags);
229     -
230     -/**
231     * blk_queue_free_tags - release tag maintenance info
232     * @q: the request queue for the device
233     *
234     diff --git a/block/compat_ioctl.c b/block/compat_ioctl.c
235     index fbd5a67cb773..a0926a6094b2 100644
236     --- a/block/compat_ioctl.c
237     +++ b/block/compat_ioctl.c
238     @@ -690,6 +690,7 @@ long compat_blkdev_ioctl(struct file *file, unsigned cmd, unsigned long arg)
239     case BLKROSET:
240     case BLKDISCARD:
241     case BLKSECDISCARD:
242     + case BLKZEROOUT:
243     /*
244     * the ones below are implemented in blkdev_locked_ioctl,
245     * but we call blkdev_ioctl, which gets the lock for us
246     diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
247     index dae5607e1115..4cd52a4541a9 100644
248     --- a/drivers/ata/ahci.c
249     +++ b/drivers/ata/ahci.c
250     @@ -456,6 +456,7 @@ static const struct pci_device_id ahci_pci_tbl[] = {
251    
252     /* Promise */
253     { PCI_VDEVICE(PROMISE, 0x3f20), board_ahci }, /* PDC42819 */
254     + { PCI_VDEVICE(PROMISE, 0x3781), board_ahci }, /* FastTrak TX8660 ahci-mode */
255    
256     /* Asmedia */
257     { PCI_VDEVICE(ASMEDIA, 0x0601), board_ahci }, /* ASM1060 */
258     diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
259     index 18d97d5c7d90..677c0c1b03bd 100644
260     --- a/drivers/ata/libata-core.c
261     +++ b/drivers/ata/libata-core.c
262     @@ -4787,6 +4787,10 @@ void swap_buf_le16(u16 *buf, unsigned int buf_words)
263     * ata_qc_new - Request an available ATA command, for queueing
264     * @ap: target port
265     *
266     + * Some ATA host controllers may implement a queue depth which is less
267     + * than ATA_MAX_QUEUE. So we shouldn't allocate a tag which is beyond
268     + * the hardware limitation.
269     + *
270     * LOCKING:
271     * None.
272     */
273     @@ -4794,14 +4798,15 @@ void swap_buf_le16(u16 *buf, unsigned int buf_words)
274     static struct ata_queued_cmd *ata_qc_new(struct ata_port *ap)
275     {
276     struct ata_queued_cmd *qc = NULL;
277     + unsigned int max_queue = ap->host->n_tags;
278     unsigned int i, tag;
279    
280     /* no command while frozen */
281     if (unlikely(ap->pflags & ATA_PFLAG_FROZEN))
282     return NULL;
283    
284     - for (i = 0; i < ATA_MAX_QUEUE; i++) {
285     - tag = (i + ap->last_tag + 1) % ATA_MAX_QUEUE;
286     + for (i = 0, tag = ap->last_tag + 1; i < max_queue; i++, tag++) {
287     + tag = tag < max_queue ? tag : 0;
288    
289     /* the last tag is reserved for internal command. */
290     if (tag == ATA_TAG_INTERNAL)
291     @@ -6088,6 +6093,7 @@ void ata_host_init(struct ata_host *host, struct device *dev,
292     {
293     spin_lock_init(&host->lock);
294     mutex_init(&host->eh_mutex);
295     + host->n_tags = ATA_MAX_QUEUE - 1;
296     host->dev = dev;
297     host->ops = ops;
298     }
299     @@ -6169,6 +6175,8 @@ int ata_host_register(struct ata_host *host, struct scsi_host_template *sht)
300     {
301     int i, rc;
302    
303     + host->n_tags = clamp(sht->can_queue, 1, ATA_MAX_QUEUE - 1);
304     +
305     /* host must have been started */
306     if (!(host->flags & ATA_HOST_STARTED)) {
307     dev_err(host->dev, "BUG: trying to register unstarted host\n");
308     diff --git a/drivers/base/platform.c b/drivers/base/platform.c
309     index 5b47210889e0..cd2a7d0a56b2 100644
310     --- a/drivers/base/platform.c
311     +++ b/drivers/base/platform.c
312     @@ -89,8 +89,13 @@ int platform_get_irq(struct platform_device *dev, unsigned int num)
313     return dev->archdata.irqs[num];
314     #else
315     struct resource *r;
316     - if (IS_ENABLED(CONFIG_OF_IRQ) && dev->dev.of_node)
317     - return of_irq_get(dev->dev.of_node, num);
318     + if (IS_ENABLED(CONFIG_OF_IRQ) && dev->dev.of_node) {
319     + int ret;
320     +
321     + ret = of_irq_get(dev->dev.of_node, num);
322     + if (ret >= 0 || ret == -EPROBE_DEFER)
323     + return ret;
324     + }
325    
326     r = platform_get_resource(dev, IORESOURCE_IRQ, num);
327    
328     diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
329     index 089e72cd37be..36e54be402df 100644
330     --- a/drivers/block/zram/zram_drv.c
331     +++ b/drivers/block/zram/zram_drv.c
332     @@ -622,11 +622,18 @@ static void zram_reset_device(struct zram *zram, bool reset_capacity)
333     memset(&zram->stats, 0, sizeof(zram->stats));
334    
335     zram->disksize = 0;
336     - if (reset_capacity) {
337     + if (reset_capacity)
338     set_capacity(zram->disk, 0);
339     - revalidate_disk(zram->disk);
340     - }
341     +
342     up_write(&zram->init_lock);
343     +
344     + /*
345     + * Revalidate disk out of the init_lock to avoid lockdep splat.
346     + * It's okay because disk's capacity is protected by init_lock
347     + * so that revalidate_disk always sees up-to-date capacity.
348     + */
349     + if (reset_capacity)
350     + revalidate_disk(zram->disk);
351     }
352    
353     static ssize_t disksize_store(struct device *dev,
354     @@ -666,8 +673,15 @@ static ssize_t disksize_store(struct device *dev,
355     zram->comp = comp;
356     zram->disksize = disksize;
357     set_capacity(zram->disk, zram->disksize >> SECTOR_SHIFT);
358     - revalidate_disk(zram->disk);
359     up_write(&zram->init_lock);
360     +
361     + /*
362     + * Revalidate disk out of the init_lock to avoid lockdep splat.
363     + * It's okay because disk's capacity is protected by init_lock
364     + * so that revalidate_disk always sees up-to-date capacity.
365     + */
366     + revalidate_disk(zram->disk);
367     +
368     return len;
369    
370     out_destroy_comp:
371     diff --git a/drivers/char/hw_random/core.c b/drivers/char/hw_random/core.c
372     index 2a451b14b3cc..c4419ea1ab07 100644
373     --- a/drivers/char/hw_random/core.c
374     +++ b/drivers/char/hw_random/core.c
375     @@ -68,6 +68,12 @@ static void add_early_randomness(struct hwrng *rng)
376     unsigned char bytes[16];
377     int bytes_read;
378    
379     + /*
380     + * Currently only virtio-rng cannot return data during device
381     + * probe, and that's handled in virtio-rng.c itself. If there
382     + * are more such devices, this call to rng_get_data can be
383     + * made conditional here instead of doing it per-device.
384     + */
385     bytes_read = rng_get_data(rng, bytes, sizeof(bytes), 1);
386     if (bytes_read > 0)
387     add_device_randomness(bytes, bytes_read);
388     diff --git a/drivers/char/hw_random/virtio-rng.c b/drivers/char/hw_random/virtio-rng.c
389     index 2ce0e225e58c..e4ecf99971fe 100644
390     --- a/drivers/char/hw_random/virtio-rng.c
391     +++ b/drivers/char/hw_random/virtio-rng.c
392     @@ -30,6 +30,8 @@ static unsigned int data_avail;
393     static DECLARE_COMPLETION(have_data);
394     static bool busy;
395    
396     +static bool probe_done;
397     +
398     static void random_recv_done(struct virtqueue *vq)
399     {
400     /* We can get spurious callbacks, e.g. shared IRQs + virtio_pci. */
401     @@ -56,6 +58,13 @@ static int virtio_read(struct hwrng *rng, void *buf, size_t size, bool wait)
402     {
403     int ret;
404    
405     + /*
406     + * Don't ask host for data till we're setup. This call can
407     + * happen during hwrng_register(), after commit d9e7972619.
408     + */
409     + if (unlikely(!probe_done))
410     + return 0;
411     +
412     if (!busy) {
413     busy = true;
414     init_completion(&have_data);
415     @@ -110,6 +119,7 @@ static int probe_common(struct virtio_device *vdev)
416     return err;
417     }
418    
419     + probe_done = true;
420     return 0;
421     }
422    
423     diff --git a/drivers/gpu/drm/radeon/cik.c b/drivers/gpu/drm/radeon/cik.c
424     index d2fd98968085..03ff689229ff 100644
425     --- a/drivers/gpu/drm/radeon/cik.c
426     +++ b/drivers/gpu/drm/radeon/cik.c
427     @@ -2290,6 +2290,7 @@ static void cik_tiling_mode_table_init(struct radeon_device *rdev)
428     gb_tile_moden = 0;
429     break;
430     }
431     + rdev->config.cik.macrotile_mode_array[reg_offset] = gb_tile_moden;
432     WREG32(GB_MACROTILE_MODE0 + (reg_offset * 4), gb_tile_moden);
433     }
434     } else if (num_pipe_configs == 8) {
435     @@ -7363,6 +7364,7 @@ static inline u32 cik_get_ih_wptr(struct radeon_device *rdev)
436     tmp = RREG32(IH_RB_CNTL);
437     tmp |= IH_WPTR_OVERFLOW_CLEAR;
438     WREG32(IH_RB_CNTL, tmp);
439     + wptr &= ~RB_OVERFLOW;
440     }
441     return (wptr & rdev->ih.ptr_mask);
442     }
443     diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
444     index a61a9039f6f6..9da5a9506d60 100644
445     --- a/drivers/gpu/drm/radeon/evergreen.c
446     +++ b/drivers/gpu/drm/radeon/evergreen.c
447     @@ -4759,6 +4759,7 @@ static u32 evergreen_get_ih_wptr(struct radeon_device *rdev)
448     tmp = RREG32(IH_RB_CNTL);
449     tmp |= IH_WPTR_OVERFLOW_CLEAR;
450     WREG32(IH_RB_CNTL, tmp);
451     + wptr &= ~RB_OVERFLOW;
452     }
453     return (wptr & rdev->ih.ptr_mask);
454     }
455     diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c
456     index bbc189fd3ddc..7600a432d702 100644
457     --- a/drivers/gpu/drm/radeon/r600.c
458     +++ b/drivers/gpu/drm/radeon/r600.c
459     @@ -3792,6 +3792,7 @@ static u32 r600_get_ih_wptr(struct radeon_device *rdev)
460     tmp = RREG32(IH_RB_CNTL);
461     tmp |= IH_WPTR_OVERFLOW_CLEAR;
462     WREG32(IH_RB_CNTL, tmp);
463     + wptr &= ~RB_OVERFLOW;
464     }
465     return (wptr & rdev->ih.ptr_mask);
466     }
467     diff --git a/drivers/gpu/drm/radeon/si.c b/drivers/gpu/drm/radeon/si.c
468     index 22a63c98ba14..70d4c7603c28 100644
469     --- a/drivers/gpu/drm/radeon/si.c
470     +++ b/drivers/gpu/drm/radeon/si.c
471     @@ -6090,6 +6090,7 @@ static inline u32 si_get_ih_wptr(struct radeon_device *rdev)
472     tmp = RREG32(IH_RB_CNTL);
473     tmp |= IH_WPTR_OVERFLOW_CLEAR;
474     WREG32(IH_RB_CNTL, tmp);
475     + wptr &= ~RB_OVERFLOW;
476     }
477     return (wptr & rdev->ih.ptr_mask);
478     }
479     diff --git a/drivers/hwmon/smsc47m192.c b/drivers/hwmon/smsc47m192.c
480     index efee4c59239f..34b9a601ad07 100644
481     --- a/drivers/hwmon/smsc47m192.c
482     +++ b/drivers/hwmon/smsc47m192.c
483     @@ -86,7 +86,7 @@ static inline u8 IN_TO_REG(unsigned long val, int n)
484     */
485     static inline s8 TEMP_TO_REG(int val)
486     {
487     - return clamp_val(SCALE(val, 1, 1000), -128000, 127000);
488     + return SCALE(clamp_val(val, -128000, 127000), 1, 1000);
489     }
490    
491     static inline int TEMP_FROM_REG(s8 val)
492     @@ -384,6 +384,8 @@ static ssize_t set_vrm(struct device *dev, struct device_attribute *attr,
493     err = kstrtoul(buf, 10, &val);
494     if (err)
495     return err;
496     + if (val > 255)
497     + return -EINVAL;
498    
499     data->vrm = val;
500     return count;
501     diff --git a/drivers/input/input.c b/drivers/input/input.c
502     index 1c4c0db05550..29ca0bb4f561 100644
503     --- a/drivers/input/input.c
504     +++ b/drivers/input/input.c
505     @@ -257,9 +257,10 @@ static int input_handle_abs_event(struct input_dev *dev,
506     }
507    
508     static int input_get_disposition(struct input_dev *dev,
509     - unsigned int type, unsigned int code, int value)
510     + unsigned int type, unsigned int code, int *pval)
511     {
512     int disposition = INPUT_IGNORE_EVENT;
513     + int value = *pval;
514    
515     switch (type) {
516    
517     @@ -357,6 +358,7 @@ static int input_get_disposition(struct input_dev *dev,
518     break;
519     }
520    
521     + *pval = value;
522     return disposition;
523     }
524    
525     @@ -365,7 +367,7 @@ static void input_handle_event(struct input_dev *dev,
526     {
527     int disposition;
528    
529     - disposition = input_get_disposition(dev, type, code, value);
530     + disposition = input_get_disposition(dev, type, code, &value);
531    
532     if ((disposition & INPUT_PASS_TO_DEVICE) && dev->event)
533     dev->event(dev, type, code, value);
534     diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
535     index ec772d962f06..ef9e0b8a9aa7 100644
536     --- a/drivers/input/mouse/synaptics.c
537     +++ b/drivers/input/mouse/synaptics.c
538     @@ -132,7 +132,8 @@ static const struct min_max_quirk min_max_pnpid_table[] = {
539     1232, 5710, 1156, 4696
540     },
541     {
542     - (const char * const []){"LEN0034", "LEN0036", "LEN2004", NULL},
543     + (const char * const []){"LEN0034", "LEN0036", "LEN2002",
544     + "LEN2004", NULL},
545     1024, 5112, 2024, 4832
546     },
547     {
548     @@ -168,7 +169,7 @@ static const char * const topbuttonpad_pnp_ids[] = {
549     "LEN0049",
550     "LEN2000",
551     "LEN2001", /* Edge E431 */
552     - "LEN2002",
553     + "LEN2002", /* Edge E531 */
554     "LEN2003",
555     "LEN2004", /* L440 */
556     "LEN2005",
557     diff --git a/drivers/media/dvb-frontends/tda10071.c b/drivers/media/dvb-frontends/tda10071.c
558     index 522fe00f5eee..49874e76548b 100644
559     --- a/drivers/media/dvb-frontends/tda10071.c
560     +++ b/drivers/media/dvb-frontends/tda10071.c
561     @@ -668,6 +668,7 @@ static int tda10071_set_frontend(struct dvb_frontend *fe)
562     struct dtv_frontend_properties *c = &fe->dtv_property_cache;
563     int ret, i;
564     u8 mode, rolloff, pilot, inversion, div;
565     + fe_modulation_t modulation;
566    
567     dev_dbg(&priv->i2c->dev,
568     "%s: delivery_system=%d modulation=%d frequency=%d symbol_rate=%d inversion=%d pilot=%d rolloff=%d\n",
569     @@ -702,10 +703,13 @@ static int tda10071_set_frontend(struct dvb_frontend *fe)
570    
571     switch (c->delivery_system) {
572     case SYS_DVBS:
573     + modulation = QPSK;
574     rolloff = 0;
575     pilot = 2;
576     break;
577     case SYS_DVBS2:
578     + modulation = c->modulation;
579     +
580     switch (c->rolloff) {
581     case ROLLOFF_20:
582     rolloff = 2;
583     @@ -750,7 +754,7 @@ static int tda10071_set_frontend(struct dvb_frontend *fe)
584    
585     for (i = 0, mode = 0xff; i < ARRAY_SIZE(TDA10071_MODCOD); i++) {
586     if (c->delivery_system == TDA10071_MODCOD[i].delivery_system &&
587     - c->modulation == TDA10071_MODCOD[i].modulation &&
588     + modulation == TDA10071_MODCOD[i].modulation &&
589     c->fec_inner == TDA10071_MODCOD[i].fec) {
590     mode = TDA10071_MODCOD[i].val;
591     dev_dbg(&priv->i2c->dev, "%s: mode found=%02x\n",
592     diff --git a/drivers/media/usb/dvb-usb-v2/af9035.c b/drivers/media/usb/dvb-usb-v2/af9035.c
593     index 021e4d35e4d7..7b9b75f60774 100644
594     --- a/drivers/media/usb/dvb-usb-v2/af9035.c
595     +++ b/drivers/media/usb/dvb-usb-v2/af9035.c
596     @@ -704,15 +704,41 @@ static int af9035_read_config(struct dvb_usb_device *d)
597     if (ret < 0)
598     goto err;
599    
600     - if (tmp == 0x00)
601     - dev_dbg(&d->udev->dev,
602     - "%s: [%d]tuner not set, using default\n",
603     - __func__, i);
604     - else
605     + dev_dbg(&d->udev->dev, "%s: [%d]tuner=%02x\n",
606     + __func__, i, tmp);
607     +
608     + /* tuner sanity check */
609     + if (state->chip_type == 0x9135) {
610     + if (state->chip_version == 0x02) {
611     + /* IT9135 BX (v2) */
612     + switch (tmp) {
613     + case AF9033_TUNER_IT9135_60:
614     + case AF9033_TUNER_IT9135_61:
615     + case AF9033_TUNER_IT9135_62:
616     + state->af9033_config[i].tuner = tmp;
617     + break;
618     + }
619     + } else {
620     + /* IT9135 AX (v1) */
621     + switch (tmp) {
622     + case AF9033_TUNER_IT9135_38:
623     + case AF9033_TUNER_IT9135_51:
624     + case AF9033_TUNER_IT9135_52:
625     + state->af9033_config[i].tuner = tmp;
626     + break;
627     + }
628     + }
629     + } else {
630     + /* AF9035 */
631     state->af9033_config[i].tuner = tmp;
632     + }
633    
634     - dev_dbg(&d->udev->dev, "%s: [%d]tuner=%02x\n",
635     - __func__, i, state->af9033_config[i].tuner);
636     + if (state->af9033_config[i].tuner != tmp) {
637     + dev_info(&d->udev->dev,
638     + "%s: [%d] overriding tuner from %02x to %02x\n",
639     + KBUILD_MODNAME, i, tmp,
640     + state->af9033_config[i].tuner);
641     + }
642    
643     switch (state->af9033_config[i].tuner) {
644     case AF9033_TUNER_TUA9001:
645     diff --git a/drivers/media/usb/hdpvr/hdpvr-video.c b/drivers/media/usb/hdpvr/hdpvr-video.c
646     index 0500c4175d5f..6bce01a674f9 100644
647     --- a/drivers/media/usb/hdpvr/hdpvr-video.c
648     +++ b/drivers/media/usb/hdpvr/hdpvr-video.c
649     @@ -82,7 +82,7 @@ static void hdpvr_read_bulk_callback(struct urb *urb)
650     }
651    
652     /*=========================================================================*/
653     -/* bufffer bits */
654     +/* buffer bits */
655    
656     /* function expects dev->io_mutex to be hold by caller */
657     int hdpvr_cancel_queue(struct hdpvr_device *dev)
658     @@ -926,7 +926,7 @@ static int hdpvr_s_ctrl(struct v4l2_ctrl *ctrl)
659     case V4L2_CID_MPEG_AUDIO_ENCODING:
660     if (dev->flags & HDPVR_FLAG_AC3_CAP) {
661     opt->audio_codec = ctrl->val;
662     - return hdpvr_set_audio(dev, opt->audio_input,
663     + return hdpvr_set_audio(dev, opt->audio_input + 1,
664     opt->audio_codec);
665     }
666     return 0;
667     @@ -1198,7 +1198,7 @@ int hdpvr_register_videodev(struct hdpvr_device *dev, struct device *parent,
668     v4l2_ctrl_new_std_menu(hdl, &hdpvr_ctrl_ops,
669     V4L2_CID_MPEG_AUDIO_ENCODING,
670     ac3 ? V4L2_MPEG_AUDIO_ENCODING_AC3 : V4L2_MPEG_AUDIO_ENCODING_AAC,
671     - 0x7, V4L2_MPEG_AUDIO_ENCODING_AAC);
672     + 0x7, ac3 ? dev->options.audio_codec : V4L2_MPEG_AUDIO_ENCODING_AAC);
673     v4l2_ctrl_new_std_menu(hdl, &hdpvr_ctrl_ops,
674     V4L2_CID_MPEG_VIDEO_ENCODING,
675     V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC, 0x3,
676     diff --git a/drivers/media/v4l2-core/v4l2-dv-timings.c b/drivers/media/v4l2-core/v4l2-dv-timings.c
677     index 48b20dfcc4d0..eb3850c246a6 100644
678     --- a/drivers/media/v4l2-core/v4l2-dv-timings.c
679     +++ b/drivers/media/v4l2-core/v4l2-dv-timings.c
680     @@ -599,10 +599,10 @@ struct v4l2_fract v4l2_calc_aspect_ratio(u8 hor_landscape, u8 vert_portrait)
681     aspect.denominator = 9;
682     } else if (ratio == 34) {
683     aspect.numerator = 4;
684     - aspect.numerator = 3;
685     + aspect.denominator = 3;
686     } else if (ratio == 68) {
687     aspect.numerator = 15;
688     - aspect.numerator = 9;
689     + aspect.denominator = 9;
690     } else {
691     aspect.numerator = hor_landscape + 99;
692     aspect.denominator = 100;
693     diff --git a/drivers/parport/Kconfig b/drivers/parport/Kconfig
694     index 2872ece81f35..44333bd8f908 100644
695     --- a/drivers/parport/Kconfig
696     +++ b/drivers/parport/Kconfig
697     @@ -5,6 +5,12 @@
698     # Parport configuration.
699     #
700    
701     +config ARCH_MIGHT_HAVE_PC_PARPORT
702     + bool
703     + help
704     + Select this config option from the architecture Kconfig if
705     + the architecture might have PC parallel port hardware.
706     +
707     menuconfig PARPORT
708     tristate "Parallel port support"
709     depends on HAS_IOMEM
710     @@ -31,12 +37,6 @@ menuconfig PARPORT
711    
712     If unsure, say Y.
713    
714     -config ARCH_MIGHT_HAVE_PC_PARPORT
715     - bool
716     - help
717     - Select this config option from the architecture Kconfig if
718     - the architecture might have PC parallel port hardware.
719     -
720     if PARPORT
721    
722     config PARPORT_PC
723     diff --git a/drivers/pinctrl/pinctrl-st.c b/drivers/pinctrl/pinctrl-st.c
724     index bd725b0a4341..3a364686c112 100644
725     --- a/drivers/pinctrl/pinctrl-st.c
726     +++ b/drivers/pinctrl/pinctrl-st.c
727     @@ -1467,7 +1467,7 @@ static void st_gpio_irqmux_handler(unsigned irq, struct irq_desc *desc)
728    
729     status = readl(info->irqmux_base);
730    
731     - for_each_set_bit(n, &status, ST_GPIO_PINS_PER_BANK)
732     + for_each_set_bit(n, &status, info->nbanks)
733     __gpio_irq_handler(&info->banks[n]);
734    
735     chained_irq_exit(chip, desc);
736     diff --git a/drivers/staging/media/omap4iss/Kconfig b/drivers/staging/media/omap4iss/Kconfig
737     index b9fe753969bd..15940f8fdd24 100644
738     --- a/drivers/staging/media/omap4iss/Kconfig
739     +++ b/drivers/staging/media/omap4iss/Kconfig
740     @@ -1,6 +1,6 @@
741     config VIDEO_OMAP4
742     bool "OMAP 4 Camera support"
743     - depends on VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API && I2C && ARCH_OMAP4
744     + depends on VIDEO_V4L2=y && VIDEO_V4L2_SUBDEV_API && I2C=y && ARCH_OMAP4
745     select VIDEOBUF2_DMA_CONTIG
746     ---help---
747     Driver for an OMAP 4 ISS controller.
748     diff --git a/fs/coredump.c b/fs/coredump.c
749     index 0b2528fb640e..a93f7e6ea4cf 100644
750     --- a/fs/coredump.c
751     +++ b/fs/coredump.c
752     @@ -306,7 +306,7 @@ static int zap_threads(struct task_struct *tsk, struct mm_struct *mm,
753     if (unlikely(nr < 0))
754     return nr;
755    
756     - tsk->flags = PF_DUMPCORE;
757     + tsk->flags |= PF_DUMPCORE;
758     if (atomic_read(&mm->mm_users) == nr + 1)
759     goto done;
760     /*
761     diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c
762     index e2cd799e4d21..2d9c1d071a7a 100644
763     --- a/fs/fuse/inode.c
764     +++ b/fs/fuse/inode.c
765     @@ -907,9 +907,6 @@ static void process_init_reply(struct fuse_conn *fc, struct fuse_req *req)
766     fc->writeback_cache = 1;
767     if (arg->time_gran && arg->time_gran <= 1000000000)
768     fc->sb->s_time_gran = arg->time_gran;
769     - else
770     - fc->sb->s_time_gran = 1000000000;
771     -
772     } else {
773     ra_pages = fc->max_read / PAGE_CACHE_SIZE;
774     fc->no_lock = 1;
775     @@ -938,7 +935,7 @@ static void fuse_send_init(struct fuse_conn *fc, struct fuse_req *req)
776     FUSE_SPLICE_WRITE | FUSE_SPLICE_MOVE | FUSE_SPLICE_READ |
777     FUSE_FLOCK_LOCKS | FUSE_IOCTL_DIR | FUSE_AUTO_INVAL_DATA |
778     FUSE_DO_READDIRPLUS | FUSE_READDIRPLUS_AUTO | FUSE_ASYNC_DIO |
779     - FUSE_WRITEBACK_CACHE;
780     + FUSE_WRITEBACK_CACHE | FUSE_NO_OPEN_SUPPORT;
781     req->in.h.opcode = FUSE_INIT;
782     req->in.numargs = 1;
783     req->in.args[0].size = sizeof(*arg);
784     diff --git a/fs/namei.c b/fs/namei.c
785     index 985c6f368485..9eb787e5c167 100644
786     --- a/fs/namei.c
787     +++ b/fs/namei.c
788     @@ -2256,9 +2256,10 @@ done:
789     goto out;
790     }
791     path->dentry = dentry;
792     - path->mnt = mntget(nd->path.mnt);
793     + path->mnt = nd->path.mnt;
794     if (should_follow_link(dentry, nd->flags & LOOKUP_FOLLOW))
795     return 1;
796     + mntget(path->mnt);
797     follow_mount(path);
798     error = 0;
799     out:
800     diff --git a/fs/nfs/nfs3acl.c b/fs/nfs/nfs3acl.c
801     index 871d6eda8dba..8f854dde4150 100644
802     --- a/fs/nfs/nfs3acl.c
803     +++ b/fs/nfs/nfs3acl.c
804     @@ -247,3 +247,46 @@ const struct xattr_handler *nfs3_xattr_handlers[] = {
805     &posix_acl_default_xattr_handler,
806     NULL,
807     };
808     +
809     +static int
810     +nfs3_list_one_acl(struct inode *inode, int type, const char *name, void *data,
811     + size_t size, ssize_t *result)
812     +{
813     + struct posix_acl *acl;
814     + char *p = data + *result;
815     +
816     + acl = get_acl(inode, type);
817     + if (!acl)
818     + return 0;
819     +
820     + posix_acl_release(acl);
821     +
822     + *result += strlen(name);
823     + *result += 1;
824     + if (!size)
825     + return 0;
826     + if (*result > size)
827     + return -ERANGE;
828     +
829     + strcpy(p, name);
830     + return 0;
831     +}
832     +
833     +ssize_t
834     +nfs3_listxattr(struct dentry *dentry, char *data, size_t size)
835     +{
836     + struct inode *inode = dentry->d_inode;
837     + ssize_t result = 0;
838     + int error;
839     +
840     + error = nfs3_list_one_acl(inode, ACL_TYPE_ACCESS,
841     + POSIX_ACL_XATTR_ACCESS, data, size, &result);
842     + if (error)
843     + return error;
844     +
845     + error = nfs3_list_one_acl(inode, ACL_TYPE_DEFAULT,
846     + POSIX_ACL_XATTR_DEFAULT, data, size, &result);
847     + if (error)
848     + return error;
849     + return result;
850     +}
851     diff --git a/fs/nfs/nfs3proc.c b/fs/nfs/nfs3proc.c
852     index db60149c4579..0e2bb2658c94 100644
853     --- a/fs/nfs/nfs3proc.c
854     +++ b/fs/nfs/nfs3proc.c
855     @@ -891,7 +891,7 @@ static const struct inode_operations nfs3_dir_inode_operations = {
856     .getattr = nfs_getattr,
857     .setattr = nfs_setattr,
858     #ifdef CONFIG_NFS_V3_ACL
859     - .listxattr = generic_listxattr,
860     + .listxattr = nfs3_listxattr,
861     .getxattr = generic_getxattr,
862     .setxattr = generic_setxattr,
863     .removexattr = generic_removexattr,
864     @@ -905,7 +905,7 @@ static const struct inode_operations nfs3_file_inode_operations = {
865     .getattr = nfs_getattr,
866     .setattr = nfs_setattr,
867     #ifdef CONFIG_NFS_V3_ACL
868     - .listxattr = generic_listxattr,
869     + .listxattr = nfs3_listxattr,
870     .getxattr = generic_getxattr,
871     .setxattr = generic_setxattr,
872     .removexattr = generic_removexattr,
873     diff --git a/include/linux/libata.h b/include/linux/libata.h
874     index 5ab4e3a76721..92abb497ab14 100644
875     --- a/include/linux/libata.h
876     +++ b/include/linux/libata.h
877     @@ -593,6 +593,7 @@ struct ata_host {
878     struct device *dev;
879     void __iomem * const *iomap;
880     unsigned int n_ports;
881     + unsigned int n_tags; /* nr of NCQ tags */
882     void *private_data;
883     struct ata_port_operations *ops;
884     unsigned long flags;
885     diff --git a/include/uapi/linux/fuse.h b/include/uapi/linux/fuse.h
886     index 40b5ca8a1b1f..25084a052a1e 100644
887     --- a/include/uapi/linux/fuse.h
888     +++ b/include/uapi/linux/fuse.h
889     @@ -101,6 +101,7 @@
890     * - add FATTR_CTIME
891     * - add ctime and ctimensec to fuse_setattr_in
892     * - add FUSE_RENAME2 request
893     + * - add FUSE_NO_OPEN_SUPPORT flag
894     */
895    
896     #ifndef _LINUX_FUSE_H
897     @@ -229,6 +230,7 @@ struct fuse_file_lock {
898     * FUSE_READDIRPLUS_AUTO: adaptive readdirplus
899     * FUSE_ASYNC_DIO: asynchronous direct I/O submission
900     * FUSE_WRITEBACK_CACHE: use writeback cache for buffered writes
901     + * FUSE_NO_OPEN_SUPPORT: kernel supports zero-message opens
902     */
903     #define FUSE_ASYNC_READ (1 << 0)
904     #define FUSE_POSIX_LOCKS (1 << 1)
905     @@ -247,6 +249,7 @@ struct fuse_file_lock {
906     #define FUSE_READDIRPLUS_AUTO (1 << 14)
907     #define FUSE_ASYNC_DIO (1 << 15)
908     #define FUSE_WRITEBACK_CACHE (1 << 16)
909     +#define FUSE_NO_OPEN_SUPPORT (1 << 17)
910    
911     /**
912     * CUSE INIT request/reply flags
913     diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
914     index 4dcbf7dc3c51..e1baa92f8013 100644
915     --- a/kernel/trace/trace.c
916     +++ b/kernel/trace/trace.c
917     @@ -823,7 +823,7 @@ static struct {
918     { trace_clock_local, "local", 1 },
919     { trace_clock_global, "global", 1 },
920     { trace_clock_counter, "counter", 0 },
921     - { trace_clock_jiffies, "uptime", 1 },
922     + { trace_clock_jiffies, "uptime", 0 },
923     { trace_clock, "perf", 1 },
924     ARCH_TRACE_CLOCKS
925     };
926     diff --git a/kernel/trace/trace_clock.c b/kernel/trace/trace_clock.c
927     index 26dc348332b7..57b67b1f24d1 100644
928     --- a/kernel/trace/trace_clock.c
929     +++ b/kernel/trace/trace_clock.c
930     @@ -59,13 +59,14 @@ u64 notrace trace_clock(void)
931    
932     /*
933     * trace_jiffy_clock(): Simply use jiffies as a clock counter.
934     + * Note that this use of jiffies_64 is not completely safe on
935     + * 32-bit systems. But the window is tiny, and the effect if
936     + * we are affected is that we will have an obviously bogus
937     + * timestamp on a trace event - i.e. not life threatening.
938     */
939     u64 notrace trace_clock_jiffies(void)
940     {
941     - u64 jiffy = jiffies - INITIAL_JIFFIES;
942     -
943     - /* Return nsecs */
944     - return (u64)jiffies_to_usecs(jiffy) * 1000ULL;
945     + return jiffies_64_to_clock_t(jiffies_64 - INITIAL_JIFFIES);
946     }
947    
948     /*
949     diff --git a/mm/hugetlb.c b/mm/hugetlb.c
950     index a646f1598d58..002f08e3d61c 100644
951     --- a/mm/hugetlb.c
952     +++ b/mm/hugetlb.c
953     @@ -2461,6 +2461,7 @@ int copy_hugetlb_page_range(struct mm_struct *dst, struct mm_struct *src,
954     } else {
955     if (cow)
956     huge_ptep_set_wrprotect(src, addr, src_pte);
957     + entry = huge_ptep_get(src_pte);
958     ptepage = pte_page(entry);
959     get_page(ptepage);
960     page_dup_rmap(ptepage);
961     diff --git a/mm/memory.c b/mm/memory.c
962     index e302ae1dcce0..4f9e53024b24 100644
963     --- a/mm/memory.c
964     +++ b/mm/memory.c
965     @@ -3515,7 +3515,7 @@ static int do_read_fault(struct mm_struct *mm, struct vm_area_struct *vma,
966     * if page by the offset is not ready to be mapped (cold cache or
967     * something).
968     */
969     - if (vma->vm_ops->map_pages) {
970     + if (vma->vm_ops->map_pages && !(flags & FAULT_FLAG_NONLINEAR)) {
971     pte = pte_offset_map_lock(mm, pmd, address, &ptl);
972     do_fault_around(vma, address, pte, pgoff, flags);
973     if (!pte_same(*pte, orig_pte))
974     diff --git a/mm/slab_common.c b/mm/slab_common.c
975     index 102cc6fca3d3..b810fba0095d 100644
976     --- a/mm/slab_common.c
977     +++ b/mm/slab_common.c
978     @@ -55,7 +55,7 @@ static int kmem_cache_sanity_check(const char *name, size_t size)
979     continue;
980     }
981    
982     -#if !defined(CONFIG_SLUB) || !defined(CONFIG_SLUB_DEBUG_ON)
983     +#if !defined(CONFIG_SLUB)
984     if (!strcmp(s->name, name)) {
985     pr_err("%s (%s): Cache name already exists.\n",
986     __func__, name);
987     diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
988     index 052c1bf8ffac..8060b28dcef6 100644
989     --- a/net/wireless/nl80211.c
990     +++ b/net/wireless/nl80211.c
991     @@ -1470,18 +1470,17 @@ static int nl80211_send_wiphy(struct cfg80211_registered_device *dev,
992     }
993     CMD(start_p2p_device, START_P2P_DEVICE);
994     CMD(set_mcast_rate, SET_MCAST_RATE);
995     +#ifdef CONFIG_NL80211_TESTMODE
996     + CMD(testmode_cmd, TESTMODE);
997     +#endif
998     if (state->split) {
999     CMD(crit_proto_start, CRIT_PROTOCOL_START);
1000     CMD(crit_proto_stop, CRIT_PROTOCOL_STOP);
1001     if (dev->wiphy.flags & WIPHY_FLAG_HAS_CHANNEL_SWITCH)
1002     CMD(channel_switch, CHANNEL_SWITCH);
1003     + CMD(set_qos_map, SET_QOS_MAP);
1004     }
1005     - CMD(set_qos_map, SET_QOS_MAP);
1006     -
1007     -#ifdef CONFIG_NL80211_TESTMODE
1008     - CMD(testmode_cmd, TESTMODE);
1009     -#endif
1010     -
1011     + /* add into the if now */
1012     #undef CMD
1013    
1014     if (dev->ops->connect || dev->ops->auth) {