Magellan Linux

Contents of /trunk/kernel-alx/patches-3.10/0150-3.10.51-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2638 - (show annotations) (download)
Tue Jul 21 16:20:19 2015 UTC (8 years, 9 months ago) by niro
File size: 22355 byte(s)
-linux-3.10.51
1 diff --git a/Makefile b/Makefile
2 index 8d891c66803c..f9f6ee59c61a 100644
3 --- a/Makefile
4 +++ b/Makefile
5 @@ -1,6 +1,6 @@
6 VERSION = 3
7 PATCHLEVEL = 10
8 -SUBLEVEL = 50
9 +SUBLEVEL = 51
10 EXTRAVERSION =
11 NAME = TOSSUG Baby Fish
12
13 @@ -614,6 +614,8 @@ KBUILD_CFLAGS += -fomit-frame-pointer
14 endif
15 endif
16
17 +KBUILD_CFLAGS += $(call cc-option, -fno-var-tracking-assignments)
18 +
19 ifdef CONFIG_DEBUG_INFO
20 KBUILD_CFLAGS += -g
21 KBUILD_AFLAGS += -gdwarf-2
22 diff --git a/arch/parisc/include/uapi/asm/signal.h b/arch/parisc/include/uapi/asm/signal.h
23 index a2fa297196bc..f5645d6a89f2 100644
24 --- a/arch/parisc/include/uapi/asm/signal.h
25 +++ b/arch/parisc/include/uapi/asm/signal.h
26 @@ -69,8 +69,6 @@
27 #define SA_NOMASK SA_NODEFER
28 #define SA_ONESHOT SA_RESETHAND
29
30 -#define SA_RESTORER 0x04000000 /* obsolete -- ignored */
31 -
32 #define MINSIGSTKSZ 2048
33 #define SIGSTKSZ 8192
34
35 diff --git a/arch/s390/kernel/ptrace.c b/arch/s390/kernel/ptrace.c
36 index a314c57f4e94..9677d935583c 100644
37 --- a/arch/s390/kernel/ptrace.c
38 +++ b/arch/s390/kernel/ptrace.c
39 @@ -314,7 +314,9 @@ static int __poke_user(struct task_struct *child, addr_t addr, addr_t data)
40 * psw and gprs are stored on the stack
41 */
42 if (addr == (addr_t) &dummy->regs.psw.mask &&
43 - ((data & ~PSW_MASK_USER) != psw_user_bits ||
44 + (((data^psw_user_bits) & ~PSW_MASK_USER) ||
45 + (((data^psw_user_bits) & PSW_MASK_ASC) &&
46 + ((data|psw_user_bits) & PSW_MASK_ASC) == PSW_MASK_ASC) ||
47 ((data & PSW_MASK_EA) && !(data & PSW_MASK_BA))))
48 /* Invalid psw mask. */
49 return -EINVAL;
50 @@ -627,7 +629,10 @@ static int __poke_user_compat(struct task_struct *child,
51 */
52 if (addr == (addr_t) &dummy32->regs.psw.mask) {
53 /* Build a 64 bit psw mask from 31 bit mask. */
54 - if ((tmp & ~PSW32_MASK_USER) != psw32_user_bits)
55 + if (((tmp^psw32_user_bits) & ~PSW32_MASK_USER) ||
56 + (((tmp^psw32_user_bits) & PSW32_MASK_ASC) &&
57 + ((tmp|psw32_user_bits) & PSW32_MASK_ASC)
58 + == PSW32_MASK_ASC))
59 /* Invalid psw mask. */
60 return -EINVAL;
61 regs->psw.mask = (regs->psw.mask & ~PSW_MASK_USER) |
62 diff --git a/arch/x86/boot/header.S b/arch/x86/boot/header.S
63 index 9ec06a1f6d61..425712462178 100644
64 --- a/arch/x86/boot/header.S
65 +++ b/arch/x86/boot/header.S
66 @@ -91,10 +91,9 @@ bs_die:
67
68 .section ".bsdata", "a"
69 bugger_off_msg:
70 - .ascii "Direct floppy boot is not supported. "
71 - .ascii "Use a boot loader program instead.\r\n"
72 + .ascii "Use a boot loader.\r\n"
73 .ascii "\n"
74 - .ascii "Remove disk and press any key to reboot ...\r\n"
75 + .ascii "Remove disk and press any key to reboot...\r\n"
76 .byte 0
77
78 #ifdef CONFIG_EFI_STUB
79 @@ -108,7 +107,7 @@ coff_header:
80 #else
81 .word 0x8664 # x86-64
82 #endif
83 - .word 3 # nr_sections
84 + .word 4 # nr_sections
85 .long 0 # TimeDateStamp
86 .long 0 # PointerToSymbolTable
87 .long 1 # NumberOfSymbols
88 @@ -250,6 +249,25 @@ section_table:
89 .word 0 # NumberOfLineNumbers
90 .long 0x60500020 # Characteristics (section flags)
91
92 + #
93 + # The offset & size fields are filled in by build.c.
94 + #
95 + .ascii ".bss"
96 + .byte 0
97 + .byte 0
98 + .byte 0
99 + .byte 0
100 + .long 0
101 + .long 0x0
102 + .long 0 # Size of initialized data
103 + # on disk
104 + .long 0x0
105 + .long 0 # PointerToRelocations
106 + .long 0 # PointerToLineNumbers
107 + .word 0 # NumberOfRelocations
108 + .word 0 # NumberOfLineNumbers
109 + .long 0xc8000080 # Characteristics (section flags)
110 +
111 #endif /* CONFIG_EFI_STUB */
112
113 # Kernel attributes; used by setup. This is part 1 of the
114 diff --git a/arch/x86/boot/tools/build.c b/arch/x86/boot/tools/build.c
115 index 94c544650020..971a0ce062aa 100644
116 --- a/arch/x86/boot/tools/build.c
117 +++ b/arch/x86/boot/tools/build.c
118 @@ -141,7 +141,7 @@ static void usage(void)
119
120 #ifdef CONFIG_EFI_STUB
121
122 -static void update_pecoff_section_header(char *section_name, u32 offset, u32 size)
123 +static void update_pecoff_section_header_fields(char *section_name, u32 vma, u32 size, u32 datasz, u32 offset)
124 {
125 unsigned int pe_header;
126 unsigned short num_sections;
127 @@ -162,10 +162,10 @@ static void update_pecoff_section_header(char *section_name, u32 offset, u32 siz
128 put_unaligned_le32(size, section + 0x8);
129
130 /* section header vma field */
131 - put_unaligned_le32(offset, section + 0xc);
132 + put_unaligned_le32(vma, section + 0xc);
133
134 /* section header 'size of initialised data' field */
135 - put_unaligned_le32(size, section + 0x10);
136 + put_unaligned_le32(datasz, section + 0x10);
137
138 /* section header 'file offset' field */
139 put_unaligned_le32(offset, section + 0x14);
140 @@ -177,6 +177,11 @@ static void update_pecoff_section_header(char *section_name, u32 offset, u32 siz
141 }
142 }
143
144 +static void update_pecoff_section_header(char *section_name, u32 offset, u32 size)
145 +{
146 + update_pecoff_section_header_fields(section_name, offset, size, size, offset);
147 +}
148 +
149 static void update_pecoff_setup_and_reloc(unsigned int size)
150 {
151 u32 setup_offset = 0x200;
152 @@ -201,9 +206,6 @@ static void update_pecoff_text(unsigned int text_start, unsigned int file_sz)
153
154 pe_header = get_unaligned_le32(&buf[0x3c]);
155
156 - /* Size of image */
157 - put_unaligned_le32(file_sz, &buf[pe_header + 0x50]);
158 -
159 /*
160 * Size of code: Subtract the size of the first sector (512 bytes)
161 * which includes the header.
162 @@ -218,6 +220,22 @@ static void update_pecoff_text(unsigned int text_start, unsigned int file_sz)
163 update_pecoff_section_header(".text", text_start, text_sz);
164 }
165
166 +static void update_pecoff_bss(unsigned int file_sz, unsigned int init_sz)
167 +{
168 + unsigned int pe_header;
169 + unsigned int bss_sz = init_sz - file_sz;
170 +
171 + pe_header = get_unaligned_le32(&buf[0x3c]);
172 +
173 + /* Size of uninitialized data */
174 + put_unaligned_le32(bss_sz, &buf[pe_header + 0x24]);
175 +
176 + /* Size of image */
177 + put_unaligned_le32(init_sz, &buf[pe_header + 0x50]);
178 +
179 + update_pecoff_section_header_fields(".bss", file_sz, bss_sz, 0, 0);
180 +}
181 +
182 #endif /* CONFIG_EFI_STUB */
183
184
185 @@ -268,6 +286,9 @@ int main(int argc, char ** argv)
186 int fd;
187 void *kernel;
188 u32 crc = 0xffffffffUL;
189 +#ifdef CONFIG_EFI_STUB
190 + unsigned int init_sz;
191 +#endif
192
193 /* Defaults for old kernel */
194 #ifdef CONFIG_X86_32
195 @@ -338,7 +359,9 @@ int main(int argc, char ** argv)
196 put_unaligned_le32(sys_size, &buf[0x1f4]);
197
198 #ifdef CONFIG_EFI_STUB
199 - update_pecoff_text(setup_sectors * 512, sz + i + ((sys_size * 16) - sz));
200 + update_pecoff_text(setup_sectors * 512, i + (sys_size * 16));
201 + init_sz = get_unaligned_le32(&buf[0x260]);
202 + update_pecoff_bss(i + (sys_size * 16), init_sz);
203
204 #ifdef CONFIG_X86_64 /* Yes, this is really how we defined it :( */
205 efi_stub_entry -= 0x200;
206 diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S
207 index ac6328176097..08fa44443a01 100644
208 --- a/arch/x86/kernel/entry_32.S
209 +++ b/arch/x86/kernel/entry_32.S
210 @@ -436,8 +436,8 @@ sysenter_do_call:
211 cmpl $(NR_syscalls), %eax
212 jae sysenter_badsys
213 call *sys_call_table(,%eax,4)
214 - movl %eax,PT_EAX(%esp)
215 sysenter_after_call:
216 + movl %eax,PT_EAX(%esp)
217 LOCKDEP_SYS_EXIT
218 DISABLE_INTERRUPTS(CLBR_ANY)
219 TRACE_IRQS_OFF
220 @@ -517,6 +517,7 @@ ENTRY(system_call)
221 jae syscall_badsys
222 syscall_call:
223 call *sys_call_table(,%eax,4)
224 +syscall_after_call:
225 movl %eax,PT_EAX(%esp) # store the return value
226 syscall_exit:
227 LOCKDEP_SYS_EXIT
228 @@ -686,12 +687,12 @@ syscall_fault:
229 END(syscall_fault)
230
231 syscall_badsys:
232 - movl $-ENOSYS,PT_EAX(%esp)
233 - jmp syscall_exit
234 + movl $-ENOSYS,%eax
235 + jmp syscall_after_call
236 END(syscall_badsys)
237
238 sysenter_badsys:
239 - movl $-ENOSYS,PT_EAX(%esp)
240 + movl $-ENOSYS,%eax
241 jmp sysenter_after_call
242 END(syscall_badsys)
243 CFI_ENDPROC
244 diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c
245 index e8918ffaf96d..b95219d2168d 100644
246 --- a/block/blk-cgroup.c
247 +++ b/block/blk-cgroup.c
248 @@ -876,6 +876,13 @@ void blkcg_drain_queue(struct request_queue *q)
249 {
250 lockdep_assert_held(q->queue_lock);
251
252 + /*
253 + * @q could be exiting and already have destroyed all blkgs as
254 + * indicated by NULL root_blkg. If so, don't confuse policies.
255 + */
256 + if (!q->root_blkg)
257 + return;
258 +
259 blk_throtl_drain(q);
260 }
261
262 diff --git a/block/blk-tag.c b/block/blk-tag.c
263 index cc345e1d8d4e..0c51b4b34f47 100644
264 --- a/block/blk-tag.c
265 +++ b/block/blk-tag.c
266 @@ -27,18 +27,15 @@ struct request *blk_queue_find_tag(struct request_queue *q, int tag)
267 EXPORT_SYMBOL(blk_queue_find_tag);
268
269 /**
270 - * __blk_free_tags - release a given set of tag maintenance info
271 + * blk_free_tags - release a given set of tag maintenance info
272 * @bqt: the tag map to free
273 *
274 - * Tries to free the specified @bqt. Returns true if it was
275 - * actually freed and false if there are still references using it
276 + * Drop the reference count on @bqt and frees it when the last reference
277 + * is dropped.
278 */
279 -static int __blk_free_tags(struct blk_queue_tag *bqt)
280 +void blk_free_tags(struct blk_queue_tag *bqt)
281 {
282 - int retval;
283 -
284 - retval = atomic_dec_and_test(&bqt->refcnt);
285 - if (retval) {
286 + if (atomic_dec_and_test(&bqt->refcnt)) {
287 BUG_ON(find_first_bit(bqt->tag_map, bqt->max_depth) <
288 bqt->max_depth);
289
290 @@ -50,9 +47,8 @@ static int __blk_free_tags(struct blk_queue_tag *bqt)
291
292 kfree(bqt);
293 }
294 -
295 - return retval;
296 }
297 +EXPORT_SYMBOL(blk_free_tags);
298
299 /**
300 * __blk_queue_free_tags - release tag maintenance info
301 @@ -69,28 +65,13 @@ void __blk_queue_free_tags(struct request_queue *q)
302 if (!bqt)
303 return;
304
305 - __blk_free_tags(bqt);
306 + blk_free_tags(bqt);
307
308 q->queue_tags = NULL;
309 queue_flag_clear_unlocked(QUEUE_FLAG_QUEUED, q);
310 }
311
312 /**
313 - * blk_free_tags - release a given set of tag maintenance info
314 - * @bqt: the tag map to free
315 - *
316 - * For externally managed @bqt frees the map. Callers of this
317 - * function must guarantee to have released all the queues that
318 - * might have been using this tag map.
319 - */
320 -void blk_free_tags(struct blk_queue_tag *bqt)
321 -{
322 - if (unlikely(!__blk_free_tags(bqt)))
323 - BUG();
324 -}
325 -EXPORT_SYMBOL(blk_free_tags);
326 -
327 -/**
328 * blk_queue_free_tags - release tag maintenance info
329 * @q: the request queue for the device
330 *
331 diff --git a/block/compat_ioctl.c b/block/compat_ioctl.c
332 index 7c668c8a6f95..21ad6869a5ce 100644
333 --- a/block/compat_ioctl.c
334 +++ b/block/compat_ioctl.c
335 @@ -689,6 +689,7 @@ long compat_blkdev_ioctl(struct file *file, unsigned cmd, unsigned long arg)
336 case BLKROSET:
337 case BLKDISCARD:
338 case BLKSECDISCARD:
339 + case BLKZEROOUT:
340 /*
341 * the ones below are implemented in blkdev_locked_ioctl,
342 * but we call blkdev_ioctl, which gets the lock for us
343 diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
344 index b0d33d9533aa..3b39687c6336 100644
345 --- a/drivers/ata/ahci.c
346 +++ b/drivers/ata/ahci.c
347 @@ -455,6 +455,7 @@ static const struct pci_device_id ahci_pci_tbl[] = {
348
349 /* Promise */
350 { PCI_VDEVICE(PROMISE, 0x3f20), board_ahci }, /* PDC42819 */
351 + { PCI_VDEVICE(PROMISE, 0x3781), board_ahci }, /* FastTrak TX8660 ahci-mode */
352
353 /* Asmedia */
354 { PCI_VDEVICE(ASMEDIA, 0x0601), board_ahci }, /* ASM1060 */
355 diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
356 index bf00fbcde8ad..ca7c23d58a03 100644
357 --- a/drivers/ata/libata-core.c
358 +++ b/drivers/ata/libata-core.c
359 @@ -4758,6 +4758,10 @@ void swap_buf_le16(u16 *buf, unsigned int buf_words)
360 * ata_qc_new - Request an available ATA command, for queueing
361 * @ap: target port
362 *
363 + * Some ATA host controllers may implement a queue depth which is less
364 + * than ATA_MAX_QUEUE. So we shouldn't allocate a tag which is beyond
365 + * the hardware limitation.
366 + *
367 * LOCKING:
368 * None.
369 */
370 @@ -4765,14 +4769,15 @@ void swap_buf_le16(u16 *buf, unsigned int buf_words)
371 static struct ata_queued_cmd *ata_qc_new(struct ata_port *ap)
372 {
373 struct ata_queued_cmd *qc = NULL;
374 + unsigned int max_queue = ap->host->n_tags;
375 unsigned int i, tag;
376
377 /* no command while frozen */
378 if (unlikely(ap->pflags & ATA_PFLAG_FROZEN))
379 return NULL;
380
381 - for (i = 0; i < ATA_MAX_QUEUE; i++) {
382 - tag = (i + ap->last_tag + 1) % ATA_MAX_QUEUE;
383 + for (i = 0, tag = ap->last_tag + 1; i < max_queue; i++, tag++) {
384 + tag = tag < max_queue ? tag : 0;
385
386 /* the last tag is reserved for internal command. */
387 if (tag == ATA_TAG_INTERNAL)
388 @@ -6073,6 +6078,7 @@ void ata_host_init(struct ata_host *host, struct device *dev,
389 {
390 spin_lock_init(&host->lock);
391 mutex_init(&host->eh_mutex);
392 + host->n_tags = ATA_MAX_QUEUE - 1;
393 host->dev = dev;
394 host->ops = ops;
395 }
396 @@ -6154,6 +6160,8 @@ int ata_host_register(struct ata_host *host, struct scsi_host_template *sht)
397 {
398 int i, rc;
399
400 + host->n_tags = clamp(sht->can_queue, 1, ATA_MAX_QUEUE - 1);
401 +
402 /* host must have been started */
403 if (!(host->flags & ATA_HOST_STARTED)) {
404 dev_err(host->dev, "BUG: trying to register unstarted host\n");
405 diff --git a/drivers/hwmon/smsc47m192.c b/drivers/hwmon/smsc47m192.c
406 index efee4c59239f..34b9a601ad07 100644
407 --- a/drivers/hwmon/smsc47m192.c
408 +++ b/drivers/hwmon/smsc47m192.c
409 @@ -86,7 +86,7 @@ static inline u8 IN_TO_REG(unsigned long val, int n)
410 */
411 static inline s8 TEMP_TO_REG(int val)
412 {
413 - return clamp_val(SCALE(val, 1, 1000), -128000, 127000);
414 + return SCALE(clamp_val(val, -128000, 127000), 1, 1000);
415 }
416
417 static inline int TEMP_FROM_REG(s8 val)
418 @@ -384,6 +384,8 @@ static ssize_t set_vrm(struct device *dev, struct device_attribute *attr,
419 err = kstrtoul(buf, 10, &val);
420 if (err)
421 return err;
422 + if (val > 255)
423 + return -EINVAL;
424
425 data->vrm = val;
426 return count;
427 diff --git a/drivers/input/input.c b/drivers/input/input.c
428 index 66984e272c45..a161021c4526 100644
429 --- a/drivers/input/input.c
430 +++ b/drivers/input/input.c
431 @@ -257,9 +257,10 @@ static int input_handle_abs_event(struct input_dev *dev,
432 }
433
434 static int input_get_disposition(struct input_dev *dev,
435 - unsigned int type, unsigned int code, int value)
436 + unsigned int type, unsigned int code, int *pval)
437 {
438 int disposition = INPUT_IGNORE_EVENT;
439 + int value = *pval;
440
441 switch (type) {
442
443 @@ -357,6 +358,7 @@ static int input_get_disposition(struct input_dev *dev,
444 break;
445 }
446
447 + *pval = value;
448 return disposition;
449 }
450
451 @@ -365,7 +367,7 @@ static void input_handle_event(struct input_dev *dev,
452 {
453 int disposition;
454
455 - disposition = input_get_disposition(dev, type, code, value);
456 + disposition = input_get_disposition(dev, type, code, &value);
457
458 if ((disposition & INPUT_PASS_TO_DEVICE) && dev->event)
459 dev->event(dev, type, code, value);
460 diff --git a/drivers/media/dvb-frontends/tda10071.c b/drivers/media/dvb-frontends/tda10071.c
461 index 36eb27d3fdf1..def7812d7b22 100644
462 --- a/drivers/media/dvb-frontends/tda10071.c
463 +++ b/drivers/media/dvb-frontends/tda10071.c
464 @@ -667,6 +667,7 @@ static int tda10071_set_frontend(struct dvb_frontend *fe)
465 struct dtv_frontend_properties *c = &fe->dtv_property_cache;
466 int ret, i;
467 u8 mode, rolloff, pilot, inversion, div;
468 + fe_modulation_t modulation;
469
470 dev_dbg(&priv->i2c->dev, "%s: delivery_system=%d modulation=%d " \
471 "frequency=%d symbol_rate=%d inversion=%d pilot=%d " \
472 @@ -701,10 +702,13 @@ static int tda10071_set_frontend(struct dvb_frontend *fe)
473
474 switch (c->delivery_system) {
475 case SYS_DVBS:
476 + modulation = QPSK;
477 rolloff = 0;
478 pilot = 2;
479 break;
480 case SYS_DVBS2:
481 + modulation = c->modulation;
482 +
483 switch (c->rolloff) {
484 case ROLLOFF_20:
485 rolloff = 2;
486 @@ -749,7 +753,7 @@ static int tda10071_set_frontend(struct dvb_frontend *fe)
487
488 for (i = 0, mode = 0xff; i < ARRAY_SIZE(TDA10071_MODCOD); i++) {
489 if (c->delivery_system == TDA10071_MODCOD[i].delivery_system &&
490 - c->modulation == TDA10071_MODCOD[i].modulation &&
491 + modulation == TDA10071_MODCOD[i].modulation &&
492 c->fec_inner == TDA10071_MODCOD[i].fec) {
493 mode = TDA10071_MODCOD[i].val;
494 dev_dbg(&priv->i2c->dev, "%s: mode found=%02x\n",
495 diff --git a/drivers/media/usb/hdpvr/hdpvr-video.c b/drivers/media/usb/hdpvr/hdpvr-video.c
496 index 774ba0e820be..eed70a4d24e6 100644
497 --- a/drivers/media/usb/hdpvr/hdpvr-video.c
498 +++ b/drivers/media/usb/hdpvr/hdpvr-video.c
499 @@ -81,7 +81,7 @@ static void hdpvr_read_bulk_callback(struct urb *urb)
500 }
501
502 /*=========================================================================*/
503 -/* bufffer bits */
504 +/* buffer bits */
505
506 /* function expects dev->io_mutex to be hold by caller */
507 int hdpvr_cancel_queue(struct hdpvr_device *dev)
508 @@ -921,7 +921,7 @@ static int hdpvr_s_ctrl(struct v4l2_ctrl *ctrl)
509 case V4L2_CID_MPEG_AUDIO_ENCODING:
510 if (dev->flags & HDPVR_FLAG_AC3_CAP) {
511 opt->audio_codec = ctrl->val;
512 - return hdpvr_set_audio(dev, opt->audio_input,
513 + return hdpvr_set_audio(dev, opt->audio_input + 1,
514 opt->audio_codec);
515 }
516 return 0;
517 @@ -1191,7 +1191,7 @@ int hdpvr_register_videodev(struct hdpvr_device *dev, struct device *parent,
518 v4l2_ctrl_new_std_menu(hdl, &hdpvr_ctrl_ops,
519 V4L2_CID_MPEG_AUDIO_ENCODING,
520 ac3 ? V4L2_MPEG_AUDIO_ENCODING_AC3 : V4L2_MPEG_AUDIO_ENCODING_AAC,
521 - 0x7, V4L2_MPEG_AUDIO_ENCODING_AAC);
522 + 0x7, ac3 ? dev->options.audio_codec : V4L2_MPEG_AUDIO_ENCODING_AAC);
523 v4l2_ctrl_new_std_menu(hdl, &hdpvr_ctrl_ops,
524 V4L2_CID_MPEG_VIDEO_ENCODING,
525 V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC, 0x3,
526 diff --git a/fs/coredump.c b/fs/coredump.c
527 index dafafbafa731..1d402ce5b72f 100644
528 --- a/fs/coredump.c
529 +++ b/fs/coredump.c
530 @@ -299,7 +299,7 @@ static int zap_threads(struct task_struct *tsk, struct mm_struct *mm,
531 if (unlikely(nr < 0))
532 return nr;
533
534 - tsk->flags = PF_DUMPCORE;
535 + tsk->flags |= PF_DUMPCORE;
536 if (atomic_read(&mm->mm_users) == nr + 1)
537 goto done;
538 /*
539 diff --git a/include/linux/libata.h b/include/linux/libata.h
540 index eec130af2dfa..cc82cfb66259 100644
541 --- a/include/linux/libata.h
542 +++ b/include/linux/libata.h
543 @@ -547,6 +547,7 @@ struct ata_host {
544 struct device *dev;
545 void __iomem * const *iomap;
546 unsigned int n_ports;
547 + unsigned int n_tags; /* nr of NCQ tags */
548 void *private_data;
549 struct ata_port_operations *ops;
550 unsigned long flags;
551 diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
552 index 98a830d079b9..18cdf91b2f85 100644
553 --- a/kernel/trace/trace.c
554 +++ b/kernel/trace/trace.c
555 @@ -741,7 +741,7 @@ static struct {
556 { trace_clock_local, "local", 1 },
557 { trace_clock_global, "global", 1 },
558 { trace_clock_counter, "counter", 0 },
559 - { trace_clock_jiffies, "uptime", 1 },
560 + { trace_clock_jiffies, "uptime", 0 },
561 { trace_clock, "perf", 1 },
562 ARCH_TRACE_CLOCKS
563 };
564 diff --git a/kernel/trace/trace_clock.c b/kernel/trace/trace_clock.c
565 index 26dc348332b7..57b67b1f24d1 100644
566 --- a/kernel/trace/trace_clock.c
567 +++ b/kernel/trace/trace_clock.c
568 @@ -59,13 +59,14 @@ u64 notrace trace_clock(void)
569
570 /*
571 * trace_jiffy_clock(): Simply use jiffies as a clock counter.
572 + * Note that this use of jiffies_64 is not completely safe on
573 + * 32-bit systems. But the window is tiny, and the effect if
574 + * we are affected is that we will have an obviously bogus
575 + * timestamp on a trace event - i.e. not life threatening.
576 */
577 u64 notrace trace_clock_jiffies(void)
578 {
579 - u64 jiffy = jiffies - INITIAL_JIFFIES;
580 -
581 - /* Return nsecs */
582 - return (u64)jiffies_to_usecs(jiffy) * 1000ULL;
583 + return jiffies_64_to_clock_t(jiffies_64 - INITIAL_JIFFIES);
584 }
585
586 /*
587 diff --git a/mm/hugetlb.c b/mm/hugetlb.c
588 index dbc949c409c7..7de4f67c81fe 100644
589 --- a/mm/hugetlb.c
590 +++ b/mm/hugetlb.c
591 @@ -2400,6 +2400,7 @@ int copy_hugetlb_page_range(struct mm_struct *dst, struct mm_struct *src,
592 } else {
593 if (cow)
594 huge_ptep_set_wrprotect(src, addr, src_pte);
595 + entry = huge_ptep_get(src_pte);
596 ptepage = pte_page(entry);
597 get_page(ptepage);
598 page_dup_rmap(ptepage);
599 diff --git a/mm/slab_common.c b/mm/slab_common.c
600 index 2d414508e9ec..7d21d3fddbf0 100644
601 --- a/mm/slab_common.c
602 +++ b/mm/slab_common.c
603 @@ -55,6 +55,7 @@ static int kmem_cache_sanity_check(struct mem_cgroup *memcg, const char *name,
604 continue;
605 }
606
607 +#if !defined(CONFIG_SLUB)
608 /*
609 * For simplicity, we won't check this in the list of memcg
610 * caches. We have control over memcg naming, and if there
611 @@ -68,6 +69,7 @@ static int kmem_cache_sanity_check(struct mem_cgroup *memcg, const char *name,
612 s = NULL;
613 return -EINVAL;
614 }
615 +#endif
616 }
617
618 WARN_ON(strchr(name, ' ')); /* It confuses parsers */
619 diff --git a/net/netfilter/nfnetlink_queue_core.c b/net/netfilter/nfnetlink_queue_core.c
620 index 5352b2d2d5bf..2b8199f68785 100644
621 --- a/net/netfilter/nfnetlink_queue_core.c
622 +++ b/net/netfilter/nfnetlink_queue_core.c
623 @@ -227,22 +227,23 @@ nfqnl_flush(struct nfqnl_instance *queue, nfqnl_cmpfn cmpfn, unsigned long data)
624 spin_unlock_bh(&queue->lock);
625 }
626
627 -static void
628 +static int
629 nfqnl_zcopy(struct sk_buff *to, const struct sk_buff *from, int len, int hlen)
630 {
631 int i, j = 0;
632 int plen = 0; /* length of skb->head fragment */
633 + int ret;
634 struct page *page;
635 unsigned int offset;
636
637 /* dont bother with small payloads */
638 - if (len <= skb_tailroom(to)) {
639 - skb_copy_bits(from, 0, skb_put(to, len), len);
640 - return;
641 - }
642 + if (len <= skb_tailroom(to))
643 + return skb_copy_bits(from, 0, skb_put(to, len), len);
644
645 if (hlen) {
646 - skb_copy_bits(from, 0, skb_put(to, hlen), hlen);
647 + ret = skb_copy_bits(from, 0, skb_put(to, hlen), hlen);
648 + if (unlikely(ret))
649 + return ret;
650 len -= hlen;
651 } else {
652 plen = min_t(int, skb_headlen(from), len);
653 @@ -260,6 +261,11 @@ nfqnl_zcopy(struct sk_buff *to, const struct sk_buff *from, int len, int hlen)
654 to->len += len + plen;
655 to->data_len += len + plen;
656
657 + if (unlikely(skb_orphan_frags(from, GFP_ATOMIC))) {
658 + skb_tx_error(from);
659 + return -ENOMEM;
660 + }
661 +
662 for (i = 0; i < skb_shinfo(from)->nr_frags; i++) {
663 if (!len)
664 break;
665 @@ -270,6 +276,8 @@ nfqnl_zcopy(struct sk_buff *to, const struct sk_buff *from, int len, int hlen)
666 j++;
667 }
668 skb_shinfo(to)->nr_frags = j;
669 +
670 + return 0;
671 }
672
673 static int nfqnl_put_packet_info(struct sk_buff *nlskb, struct sk_buff *packet)
674 @@ -355,13 +363,16 @@ nfqnl_build_packet_message(struct nfqnl_instance *queue,
675
676 skb = nfnetlink_alloc_skb(&init_net, size, queue->peer_portid,
677 GFP_ATOMIC);
678 - if (!skb)
679 + if (!skb) {
680 + skb_tx_error(entskb);
681 return NULL;
682 + }
683
684 nlh = nlmsg_put(skb, 0, 0,
685 NFNL_SUBSYS_QUEUE << 8 | NFQNL_MSG_PACKET,
686 sizeof(struct nfgenmsg), 0);
687 if (!nlh) {
688 + skb_tx_error(entskb);
689 kfree_skb(skb);
690 return NULL;
691 }
692 @@ -481,13 +492,15 @@ nfqnl_build_packet_message(struct nfqnl_instance *queue,
693 nla->nla_type = NFQA_PAYLOAD;
694 nla->nla_len = nla_attr_size(data_len);
695
696 - nfqnl_zcopy(skb, entskb, data_len, hlen);
697 + if (nfqnl_zcopy(skb, entskb, data_len, hlen))
698 + goto nla_put_failure;
699 }
700
701 nlh->nlmsg_len = skb->len;
702 return skb;
703
704 nla_put_failure:
705 + skb_tx_error(entskb);
706 kfree_skb(skb);
707 net_err_ratelimited("nf_queue: error creating packet message\n");
708 return NULL;