Contents of /trunk/kernel-magellan/patches-3.15/0107-3.15.8-all-fixes.patch
Parent Directory | Revision Log
Revision 2488 -
(show annotations)
(download)
Thu Aug 7 08:28:06 2014 UTC (10 years, 1 month ago) by niro
File size: 32685 byte(s)
Thu Aug 7 08:28:06 2014 UTC (10 years, 1 month ago) by niro
File size: 32685 byte(s)
-linux-3.15.8
1 | 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) { |