Magellan Linux

Annotation of /trunk/kernel-alx/patches-4.19/0131-4.19.32-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3410 - (hide annotations) (download)
Fri Aug 2 11:47:41 2019 UTC (4 years, 9 months ago) by niro
File size: 50422 byte(s)
-linux-4.19.32
1 niro 3410 diff --git a/Makefile b/Makefile
2     index 3b1c6cff6700..d66c433df5b1 100644
3     --- a/Makefile
4     +++ b/Makefile
5     @@ -1,7 +1,7 @@
6     # SPDX-License-Identifier: GPL-2.0
7     VERSION = 4
8     PATCHLEVEL = 19
9     -SUBLEVEL = 31
10     +SUBLEVEL = 32
11     EXTRAVERSION =
12     NAME = "People's Front"
13    
14     diff --git a/arch/mips/include/asm/jump_label.h b/arch/mips/include/asm/jump_label.h
15     index e77672539e8e..e4456e450f94 100644
16     --- a/arch/mips/include/asm/jump_label.h
17     +++ b/arch/mips/include/asm/jump_label.h
18     @@ -21,15 +21,15 @@
19     #endif
20    
21     #ifdef CONFIG_CPU_MICROMIPS
22     -#define NOP_INSN "nop32"
23     +#define B_INSN "b32"
24     #else
25     -#define NOP_INSN "nop"
26     +#define B_INSN "b"
27     #endif
28    
29     static __always_inline bool arch_static_branch(struct static_key *key, bool branch)
30     {
31     - asm_volatile_goto("1:\t" NOP_INSN "\n\t"
32     - "nop\n\t"
33     + asm_volatile_goto("1:\t" B_INSN " 2f\n\t"
34     + "2:\tnop\n\t"
35     ".pushsection __jump_table, \"aw\"\n\t"
36     WORD_INSN " 1b, %l[l_yes], %0\n\t"
37     ".popsection\n\t"
38     diff --git a/arch/mips/kernel/vmlinux.lds.S b/arch/mips/kernel/vmlinux.lds.S
39     index 971a504001c2..36f2e860ba3e 100644
40     --- a/arch/mips/kernel/vmlinux.lds.S
41     +++ b/arch/mips/kernel/vmlinux.lds.S
42     @@ -140,6 +140,13 @@ SECTIONS
43     PERCPU_SECTION(1 << CONFIG_MIPS_L1_CACHE_SHIFT)
44     #endif
45    
46     +#ifdef CONFIG_MIPS_ELF_APPENDED_DTB
47     + .appended_dtb : AT(ADDR(.appended_dtb) - LOAD_OFFSET) {
48     + *(.appended_dtb)
49     + KEEP(*(.appended_dtb))
50     + }
51     +#endif
52     +
53     #ifdef CONFIG_RELOCATABLE
54     . = ALIGN(4);
55    
56     @@ -164,11 +171,6 @@ SECTIONS
57     __appended_dtb = .;
58     /* leave space for appended DTB */
59     . += 0x100000;
60     -#elif defined(CONFIG_MIPS_ELF_APPENDED_DTB)
61     - .appended_dtb : AT(ADDR(.appended_dtb) - LOAD_OFFSET) {
62     - *(.appended_dtb)
63     - KEEP(*(.appended_dtb))
64     - }
65     #endif
66     /*
67     * Align to 64K in attempt to eliminate holes before the
68     diff --git a/arch/mips/loongson64/lemote-2f/irq.c b/arch/mips/loongson64/lemote-2f/irq.c
69     index 9e33e45aa17c..b213cecb8e3a 100644
70     --- a/arch/mips/loongson64/lemote-2f/irq.c
71     +++ b/arch/mips/loongson64/lemote-2f/irq.c
72     @@ -103,7 +103,7 @@ static struct irqaction ip6_irqaction = {
73     static struct irqaction cascade_irqaction = {
74     .handler = no_action,
75     .name = "cascade",
76     - .flags = IRQF_NO_THREAD,
77     + .flags = IRQF_NO_THREAD | IRQF_NO_SUSPEND,
78     };
79    
80     void __init mach_init_irq(void)
81     diff --git a/arch/powerpc/include/asm/vdso_datapage.h b/arch/powerpc/include/asm/vdso_datapage.h
82     index 1afe90ade595..bbc06bd72b1f 100644
83     --- a/arch/powerpc/include/asm/vdso_datapage.h
84     +++ b/arch/powerpc/include/asm/vdso_datapage.h
85     @@ -82,10 +82,10 @@ struct vdso_data {
86     __u32 icache_block_size; /* L1 i-cache block size */
87     __u32 dcache_log_block_size; /* L1 d-cache log block size */
88     __u32 icache_log_block_size; /* L1 i-cache log block size */
89     - __s32 wtom_clock_sec; /* Wall to monotonic clock */
90     - __s32 wtom_clock_nsec;
91     - struct timespec stamp_xtime; /* xtime as at tb_orig_stamp */
92     - __u32 stamp_sec_fraction; /* fractional seconds of stamp_xtime */
93     + __u32 stamp_sec_fraction; /* fractional seconds of stamp_xtime */
94     + __s32 wtom_clock_nsec; /* Wall to monotonic clock nsec */
95     + __s64 wtom_clock_sec; /* Wall to monotonic clock sec */
96     + struct timespec stamp_xtime; /* xtime as at tb_orig_stamp */
97     __u32 syscall_map_64[SYSCALL_MAP_SIZE]; /* map of syscalls */
98     __u32 syscall_map_32[SYSCALL_MAP_SIZE]; /* map of syscalls */
99     };
100     diff --git a/arch/powerpc/kernel/vdso64/gettimeofday.S b/arch/powerpc/kernel/vdso64/gettimeofday.S
101     index c002adcc694c..afbad2ac3147 100644
102     --- a/arch/powerpc/kernel/vdso64/gettimeofday.S
103     +++ b/arch/powerpc/kernel/vdso64/gettimeofday.S
104     @@ -92,7 +92,7 @@ V_FUNCTION_BEGIN(__kernel_clock_gettime)
105     * At this point, r4,r5 contain our sec/nsec values.
106     */
107    
108     - lwa r6,WTOM_CLOCK_SEC(r3)
109     + ld r6,WTOM_CLOCK_SEC(r3)
110     lwa r9,WTOM_CLOCK_NSEC(r3)
111    
112     /* We now have our result in r6,r9. We create a fake dependency
113     @@ -125,7 +125,7 @@ V_FUNCTION_BEGIN(__kernel_clock_gettime)
114     bne cr6,75f
115    
116     /* CLOCK_MONOTONIC_COARSE */
117     - lwa r6,WTOM_CLOCK_SEC(r3)
118     + ld r6,WTOM_CLOCK_SEC(r3)
119     lwa r9,WTOM_CLOCK_NSEC(r3)
120    
121     /* check if counter has updated */
122     diff --git a/arch/x86/include/asm/unwind.h b/arch/x86/include/asm/unwind.h
123     index 1f86e1b0a5cd..499578f7e6d7 100644
124     --- a/arch/x86/include/asm/unwind.h
125     +++ b/arch/x86/include/asm/unwind.h
126     @@ -23,6 +23,12 @@ struct unwind_state {
127     #elif defined(CONFIG_UNWINDER_FRAME_POINTER)
128     bool got_irq;
129     unsigned long *bp, *orig_sp, ip;
130     + /*
131     + * If non-NULL: The current frame is incomplete and doesn't contain a
132     + * valid BP. When looking for the next frame, use this instead of the
133     + * non-existent saved BP.
134     + */
135     + unsigned long *next_bp;
136     struct pt_regs *regs;
137     #else
138     unsigned long *sp;
139     diff --git a/arch/x86/kernel/unwind_frame.c b/arch/x86/kernel/unwind_frame.c
140     index 3dc26f95d46e..9b9fd4826e7a 100644
141     --- a/arch/x86/kernel/unwind_frame.c
142     +++ b/arch/x86/kernel/unwind_frame.c
143     @@ -320,10 +320,14 @@ bool unwind_next_frame(struct unwind_state *state)
144     }
145    
146     /* Get the next frame pointer: */
147     - if (state->regs)
148     + if (state->next_bp) {
149     + next_bp = state->next_bp;
150     + state->next_bp = NULL;
151     + } else if (state->regs) {
152     next_bp = (unsigned long *)state->regs->bp;
153     - else
154     + } else {
155     next_bp = (unsigned long *)READ_ONCE_TASK_STACK(state->task, *state->bp);
156     + }
157    
158     /* Move to the next frame if it's safe: */
159     if (!update_stack_state(state, next_bp))
160     @@ -398,6 +402,21 @@ void __unwind_start(struct unwind_state *state, struct task_struct *task,
161    
162     bp = get_frame_pointer(task, regs);
163    
164     + /*
165     + * If we crash with IP==0, the last successfully executed instruction
166     + * was probably an indirect function call with a NULL function pointer.
167     + * That means that SP points into the middle of an incomplete frame:
168     + * *SP is a return pointer, and *(SP-sizeof(unsigned long)) is where we
169     + * would have written a frame pointer if we hadn't crashed.
170     + * Pretend that the frame is complete and that BP points to it, but save
171     + * the real BP so that we can use it when looking for the next frame.
172     + */
173     + if (regs && regs->ip == 0 &&
174     + (unsigned long *)kernel_stack_pointer(regs) >= first_frame) {
175     + state->next_bp = bp;
176     + bp = ((unsigned long *)kernel_stack_pointer(regs)) - 1;
177     + }
178     +
179     /* Initialize stack info and make sure the frame data is accessible: */
180     get_stack_info(bp, state->task, &state->stack_info,
181     &state->stack_mask);
182     @@ -410,7 +429,7 @@ void __unwind_start(struct unwind_state *state, struct task_struct *task,
183     */
184     while (!unwind_done(state) &&
185     (!on_stack(&state->stack_info, first_frame, sizeof(long)) ||
186     - state->bp < first_frame))
187     + (state->next_bp == NULL && state->bp < first_frame)))
188     unwind_next_frame(state);
189     }
190     EXPORT_SYMBOL_GPL(__unwind_start);
191     diff --git a/arch/x86/kernel/unwind_orc.c b/arch/x86/kernel/unwind_orc.c
192     index 26038eacf74a..89be1be1790c 100644
193     --- a/arch/x86/kernel/unwind_orc.c
194     +++ b/arch/x86/kernel/unwind_orc.c
195     @@ -113,6 +113,20 @@ static struct orc_entry *orc_ftrace_find(unsigned long ip)
196     }
197     #endif
198    
199     +/*
200     + * If we crash with IP==0, the last successfully executed instruction
201     + * was probably an indirect function call with a NULL function pointer,
202     + * and we don't have unwind information for NULL.
203     + * This hardcoded ORC entry for IP==0 allows us to unwind from a NULL function
204     + * pointer into its parent and then continue normally from there.
205     + */
206     +static struct orc_entry null_orc_entry = {
207     + .sp_offset = sizeof(long),
208     + .sp_reg = ORC_REG_SP,
209     + .bp_reg = ORC_REG_UNDEFINED,
210     + .type = ORC_TYPE_CALL
211     +};
212     +
213     static struct orc_entry *orc_find(unsigned long ip)
214     {
215     static struct orc_entry *orc;
216     @@ -120,6 +134,9 @@ static struct orc_entry *orc_find(unsigned long ip)
217     if (!orc_init)
218     return NULL;
219    
220     + if (ip == 0)
221     + return &null_orc_entry;
222     +
223     /* For non-init vmlinux addresses, use the fast lookup table: */
224     if (ip >= LOOKUP_START_IP && ip < LOOKUP_STOP_IP) {
225     unsigned int idx, start, stop;
226     diff --git a/drivers/block/loop.c b/drivers/block/loop.c
227     index c9c2bcc36e26..0c5aeab4d23a 100644
228     --- a/drivers/block/loop.c
229     +++ b/drivers/block/loop.c
230     @@ -657,7 +657,7 @@ static int loop_validate_file(struct file *file, struct block_device *bdev)
231     return -EBADF;
232    
233     l = f->f_mapping->host->i_bdev->bd_disk->private_data;
234     - if (l->lo_state == Lo_unbound) {
235     + if (l->lo_state != Lo_bound) {
236     return -EINVAL;
237     }
238     f = l->lo_backing_file;
239     diff --git a/drivers/bluetooth/h4_recv.h b/drivers/bluetooth/h4_recv.h
240     index b432651f8236..307d82166f48 100644
241     --- a/drivers/bluetooth/h4_recv.h
242     +++ b/drivers/bluetooth/h4_recv.h
243     @@ -60,6 +60,10 @@ static inline struct sk_buff *h4_recv_buf(struct hci_dev *hdev,
244     const struct h4_recv_pkt *pkts,
245     int pkts_count)
246     {
247     + /* Check for error from previous call */
248     + if (IS_ERR(skb))
249     + skb = NULL;
250     +
251     while (count) {
252     int i, len;
253    
254     diff --git a/drivers/bluetooth/hci_h4.c b/drivers/bluetooth/hci_h4.c
255     index fb97a3bf069b..5d97d77627c1 100644
256     --- a/drivers/bluetooth/hci_h4.c
257     +++ b/drivers/bluetooth/hci_h4.c
258     @@ -174,6 +174,10 @@ struct sk_buff *h4_recv_buf(struct hci_dev *hdev, struct sk_buff *skb,
259     struct hci_uart *hu = hci_get_drvdata(hdev);
260     u8 alignment = hu->alignment ? hu->alignment : 1;
261    
262     + /* Check for error from previous call */
263     + if (IS_ERR(skb))
264     + skb = NULL;
265     +
266     while (count) {
267     int i, len;
268    
269     diff --git a/drivers/bluetooth/hci_ldisc.c b/drivers/bluetooth/hci_ldisc.c
270     index ea6238ed5c0e..c915daf01a89 100644
271     --- a/drivers/bluetooth/hci_ldisc.c
272     +++ b/drivers/bluetooth/hci_ldisc.c
273     @@ -207,11 +207,11 @@ void hci_uart_init_work(struct work_struct *work)
274     err = hci_register_dev(hu->hdev);
275     if (err < 0) {
276     BT_ERR("Can't register HCI device");
277     + clear_bit(HCI_UART_PROTO_READY, &hu->flags);
278     + hu->proto->close(hu);
279     hdev = hu->hdev;
280     hu->hdev = NULL;
281     hci_free_dev(hdev);
282     - clear_bit(HCI_UART_PROTO_READY, &hu->flags);
283     - hu->proto->close(hu);
284     return;
285     }
286    
287     @@ -616,6 +616,7 @@ static void hci_uart_tty_receive(struct tty_struct *tty, const u8 *data,
288     static int hci_uart_register_dev(struct hci_uart *hu)
289     {
290     struct hci_dev *hdev;
291     + int err;
292    
293     BT_DBG("");
294    
295     @@ -659,11 +660,22 @@ static int hci_uart_register_dev(struct hci_uart *hu)
296     else
297     hdev->dev_type = HCI_PRIMARY;
298    
299     + /* Only call open() for the protocol after hdev is fully initialized as
300     + * open() (or a timer/workqueue it starts) may attempt to reference it.
301     + */
302     + err = hu->proto->open(hu);
303     + if (err) {
304     + hu->hdev = NULL;
305     + hci_free_dev(hdev);
306     + return err;
307     + }
308     +
309     if (test_bit(HCI_UART_INIT_PENDING, &hu->hdev_flags))
310     return 0;
311    
312     if (hci_register_dev(hdev) < 0) {
313     BT_ERR("Can't register HCI device");
314     + hu->proto->close(hu);
315     hu->hdev = NULL;
316     hci_free_dev(hdev);
317     return -ENODEV;
318     @@ -683,20 +695,14 @@ static int hci_uart_set_proto(struct hci_uart *hu, int id)
319     if (!p)
320     return -EPROTONOSUPPORT;
321    
322     - err = p->open(hu);
323     - if (err)
324     - return err;
325     -
326     hu->proto = p;
327     - set_bit(HCI_UART_PROTO_READY, &hu->flags);
328    
329     err = hci_uart_register_dev(hu);
330     if (err) {
331     - clear_bit(HCI_UART_PROTO_READY, &hu->flags);
332     - p->close(hu);
333     return err;
334     }
335    
336     + set_bit(HCI_UART_PROTO_READY, &hu->flags);
337     return 0;
338     }
339    
340     diff --git a/drivers/gpu/drm/drm_mode_object.c b/drivers/gpu/drm/drm_mode_object.c
341     index fcb0ab0abb75..57cc9aa6683a 100644
342     --- a/drivers/gpu/drm/drm_mode_object.c
343     +++ b/drivers/gpu/drm/drm_mode_object.c
344     @@ -458,12 +458,13 @@ static int set_property_atomic(struct drm_mode_object *obj,
345     struct drm_modeset_acquire_ctx ctx;
346     int ret;
347    
348     - drm_modeset_acquire_init(&ctx, 0);
349     -
350     state = drm_atomic_state_alloc(dev);
351     if (!state)
352     return -ENOMEM;
353     +
354     + drm_modeset_acquire_init(&ctx, 0);
355     state->acquire_ctx = &ctx;
356     +
357     retry:
358     if (prop == state->dev->mode_config.dpms_property) {
359     if (obj->type != DRM_MODE_OBJECT_CONNECTOR) {
360     diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c b/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c
361     index b913a56f3426..2a9112515f46 100644
362     --- a/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c
363     +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c
364     @@ -564,11 +564,9 @@ static int vmw_fb_set_par(struct fb_info *info)
365     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
366     DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC)
367     };
368     - struct drm_display_mode *old_mode;
369     struct drm_display_mode *mode;
370     int ret;
371    
372     - old_mode = par->set_mode;
373     mode = drm_mode_duplicate(vmw_priv->dev, &new_mode);
374     if (!mode) {
375     DRM_ERROR("Could not create new fb mode.\n");
376     @@ -579,11 +577,7 @@ static int vmw_fb_set_par(struct fb_info *info)
377     mode->vdisplay = var->yres;
378     vmw_guess_mode_timing(mode);
379    
380     - if (old_mode && drm_mode_equal(old_mode, mode)) {
381     - drm_mode_destroy(vmw_priv->dev, mode);
382     - mode = old_mode;
383     - old_mode = NULL;
384     - } else if (!vmw_kms_validate_mode_vram(vmw_priv,
385     + if (!vmw_kms_validate_mode_vram(vmw_priv,
386     mode->hdisplay *
387     DIV_ROUND_UP(var->bits_per_pixel, 8),
388     mode->vdisplay)) {
389     @@ -620,8 +614,8 @@ static int vmw_fb_set_par(struct fb_info *info)
390     schedule_delayed_work(&par->local_work, 0);
391    
392     out_unlock:
393     - if (old_mode)
394     - drm_mode_destroy(vmw_priv->dev, old_mode);
395     + if (par->set_mode)
396     + drm_mode_destroy(vmw_priv->dev, par->set_mode);
397     par->set_mode = mode;
398    
399     mutex_unlock(&par->bo_mutex);
400     diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c b/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c
401     index b93c558dd86e..7da752ca1c34 100644
402     --- a/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c
403     +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c
404     @@ -57,7 +57,7 @@ static int vmw_gmrid_man_get_node(struct ttm_mem_type_manager *man,
405    
406     id = ida_alloc_max(&gman->gmr_ida, gman->max_gmr_ids - 1, GFP_KERNEL);
407     if (id < 0)
408     - return id;
409     + return (id != -ENOMEM ? 0 : id);
410    
411     spin_lock(&gman->lock);
412    
413     diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
414     index a36c94930c31..6f5be7802476 100644
415     --- a/drivers/infiniband/core/cma.c
416     +++ b/drivers/infiniband/core/cma.c
417     @@ -2854,13 +2854,22 @@ static void addr_handler(int status, struct sockaddr *src_addr,
418     {
419     struct rdma_id_private *id_priv = context;
420     struct rdma_cm_event event = {};
421     + struct sockaddr *addr;
422     + struct sockaddr_storage old_addr;
423    
424     mutex_lock(&id_priv->handler_mutex);
425     if (!cma_comp_exch(id_priv, RDMA_CM_ADDR_QUERY,
426     RDMA_CM_ADDR_RESOLVED))
427     goto out;
428    
429     - memcpy(cma_src_addr(id_priv), src_addr, rdma_addr_size(src_addr));
430     + /*
431     + * Store the previous src address, so that if we fail to acquire
432     + * matching rdma device, old address can be restored back, which helps
433     + * to cancel the cma listen operation correctly.
434     + */
435     + addr = cma_src_addr(id_priv);
436     + memcpy(&old_addr, addr, rdma_addr_size(addr));
437     + memcpy(addr, src_addr, rdma_addr_size(src_addr));
438     if (!status && !id_priv->cma_dev) {
439     status = cma_acquire_dev(id_priv, NULL);
440     if (status)
441     @@ -2871,6 +2880,8 @@ static void addr_handler(int status, struct sockaddr *src_addr,
442     }
443    
444     if (status) {
445     + memcpy(addr, &old_addr,
446     + rdma_addr_size((struct sockaddr *)&old_addr));
447     if (!cma_comp_exch(id_priv, RDMA_CM_ADDR_RESOLVED,
448     RDMA_CM_ADDR_BOUND))
449     goto out;
450     diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
451     index 27500abe8ca7..0b3877681e4a 100644
452     --- a/drivers/iommu/amd_iommu.c
453     +++ b/drivers/iommu/amd_iommu.c
454     @@ -2543,7 +2543,12 @@ static int map_sg(struct device *dev, struct scatterlist *sglist,
455    
456     /* Everything is mapped - write the right values into s->dma_address */
457     for_each_sg(sglist, s, nelems, i) {
458     - s->dma_address += address + s->offset;
459     + /*
460     + * Add in the remaining piece of the scatter-gather offset that
461     + * was masked out when we were determining the physical address
462     + * via (sg_phys(s) & PAGE_MASK) earlier.
463     + */
464     + s->dma_address += address + (s->offset & ~PAGE_MASK);
465     s->dma_length = s->length;
466     }
467    
468     diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c
469     index 78970cdf2ef6..65ab2c80529c 100644
470     --- a/drivers/irqchip/irq-gic-v3-its.c
471     +++ b/drivers/irqchip/irq-gic-v3-its.c
472     @@ -1477,7 +1477,7 @@ static int lpi_range_cmp(void *priv, struct list_head *a, struct list_head *b)
473     ra = container_of(a, struct lpi_range, entry);
474     rb = container_of(b, struct lpi_range, entry);
475    
476     - return rb->base_id - ra->base_id;
477     + return ra->base_id - rb->base_id;
478     }
479    
480     static void merge_lpi_ranges(void)
481     diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_ctrl.c
482     index c2ad102bd693..467b1ddaf4e7 100644
483     --- a/drivers/media/usb/uvc/uvc_ctrl.c
484     +++ b/drivers/media/usb/uvc/uvc_ctrl.c
485     @@ -1212,7 +1212,7 @@ static void uvc_ctrl_fill_event(struct uvc_video_chain *chain,
486    
487     __uvc_query_v4l2_ctrl(chain, ctrl, mapping, &v4l2_ctrl);
488    
489     - memset(ev->reserved, 0, sizeof(ev->reserved));
490     + memset(ev, 0, sizeof(*ev));
491     ev->type = V4L2_EVENT_CTRL;
492     ev->id = v4l2_ctrl.id;
493     ev->u.ctrl.value = value;
494     diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c b/drivers/media/v4l2-core/v4l2-ctrls.c
495     index 599c1cbff3b9..6ac5f5d42615 100644
496     --- a/drivers/media/v4l2-core/v4l2-ctrls.c
497     +++ b/drivers/media/v4l2-core/v4l2-ctrls.c
498     @@ -1379,7 +1379,7 @@ static u32 user_flags(const struct v4l2_ctrl *ctrl)
499    
500     static void fill_event(struct v4l2_event *ev, struct v4l2_ctrl *ctrl, u32 changes)
501     {
502     - memset(ev->reserved, 0, sizeof(ev->reserved));
503     + memset(ev, 0, sizeof(*ev));
504     ev->type = V4L2_EVENT_CTRL;
505     ev->id = ctrl->id;
506     ev->u.ctrl.changes = changes;
507     diff --git a/drivers/mmc/host/mxcmmc.c b/drivers/mmc/host/mxcmmc.c
508     index de4e6e5bf304..2f604b312767 100644
509     --- a/drivers/mmc/host/mxcmmc.c
510     +++ b/drivers/mmc/host/mxcmmc.c
511     @@ -292,11 +292,8 @@ static void mxcmci_swap_buffers(struct mmc_data *data)
512     struct scatterlist *sg;
513     int i;
514    
515     - for_each_sg(data->sg, sg, data->sg_len, i) {
516     - void *buf = kmap_atomic(sg_page(sg) + sg->offset);
517     - buffer_swap32(buf, sg->length);
518     - kunmap_atomic(buf);
519     - }
520     + for_each_sg(data->sg, sg, data->sg_len, i)
521     + buffer_swap32(sg_virt(sg), sg->length);
522     }
523     #else
524     static inline void mxcmci_swap_buffers(struct mmc_data *data) {}
525     @@ -613,7 +610,6 @@ static int mxcmci_transfer_data(struct mxcmci_host *host)
526     {
527     struct mmc_data *data = host->req->data;
528     struct scatterlist *sg;
529     - void *buf;
530     int stat, i;
531    
532     host->data = data;
533     @@ -621,18 +617,14 @@ static int mxcmci_transfer_data(struct mxcmci_host *host)
534    
535     if (data->flags & MMC_DATA_READ) {
536     for_each_sg(data->sg, sg, data->sg_len, i) {
537     - buf = kmap_atomic(sg_page(sg) + sg->offset);
538     - stat = mxcmci_pull(host, buf, sg->length);
539     - kunmap(buf);
540     + stat = mxcmci_pull(host, sg_virt(sg), sg->length);
541     if (stat)
542     return stat;
543     host->datasize += sg->length;
544     }
545     } else {
546     for_each_sg(data->sg, sg, data->sg_len, i) {
547     - buf = kmap_atomic(sg_page(sg) + sg->offset);
548     - stat = mxcmci_push(host, buf, sg->length);
549     - kunmap(buf);
550     + stat = mxcmci_push(host, sg_virt(sg), sg->length);
551     if (stat)
552     return stat;
553     host->datasize += sg->length;
554     diff --git a/drivers/mmc/host/pxamci.c b/drivers/mmc/host/pxamci.c
555     index f7ffbf1676b1..00b5465dfb0c 100644
556     --- a/drivers/mmc/host/pxamci.c
557     +++ b/drivers/mmc/host/pxamci.c
558     @@ -164,7 +164,7 @@ static void pxamci_dma_irq(void *param);
559     static void pxamci_setup_data(struct pxamci_host *host, struct mmc_data *data)
560     {
561     struct dma_async_tx_descriptor *tx;
562     - enum dma_data_direction direction;
563     + enum dma_transfer_direction direction;
564     struct dma_slave_config config;
565     struct dma_chan *chan;
566     unsigned int nob = data->blocks;
567     diff --git a/drivers/mmc/host/renesas_sdhi_core.c b/drivers/mmc/host/renesas_sdhi_core.c
568     index 777e32b0e410..45baf5d9120e 100644
569     --- a/drivers/mmc/host/renesas_sdhi_core.c
570     +++ b/drivers/mmc/host/renesas_sdhi_core.c
571     @@ -557,6 +557,7 @@ int renesas_sdhi_probe(struct platform_device *pdev,
572     struct renesas_sdhi *priv;
573     struct resource *res;
574     int irq, ret, i;
575     + u16 ver;
576    
577     of_data = of_device_get_match_data(&pdev->dev);
578    
579     @@ -671,12 +672,17 @@ int renesas_sdhi_probe(struct platform_device *pdev,
580     if (ret)
581     goto efree;
582    
583     + ver = sd_ctrl_read16(host, CTL_VERSION);
584     + /* GEN2_SDR104 is first known SDHI to use 32bit block count */
585     + if (ver < SDHI_VER_GEN2_SDR104 && mmc_data->max_blk_count > U16_MAX)
586     + mmc_data->max_blk_count = U16_MAX;
587     +
588     ret = tmio_mmc_host_probe(host);
589     if (ret < 0)
590     goto edisclk;
591    
592     /* One Gen2 SDHI incarnation does NOT have a CBSY bit */
593     - if (sd_ctrl_read16(host, CTL_VERSION) == SDHI_VER_GEN2_SDR50)
594     + if (ver == SDHI_VER_GEN2_SDR50)
595     mmc_data->flags &= ~TMIO_MMC_HAVE_CBSY;
596    
597     /* Enable tuning iff we have an SCC and a supported mode */
598     diff --git a/drivers/power/supply/charger-manager.c b/drivers/power/supply/charger-manager.c
599     index faa1a67cf3d2..7ae983e37f64 100644
600     --- a/drivers/power/supply/charger-manager.c
601     +++ b/drivers/power/supply/charger-manager.c
602     @@ -1212,7 +1212,6 @@ static int charger_extcon_init(struct charger_manager *cm,
603     if (ret < 0) {
604     pr_info("Cannot register extcon_dev for %s(cable: %s)\n",
605     cable->extcon_name, cable->name);
606     - ret = -EINVAL;
607     }
608    
609     return ret;
610     @@ -1633,7 +1632,7 @@ static int charger_manager_probe(struct platform_device *pdev)
611    
612     if (IS_ERR(desc)) {
613     dev_err(&pdev->dev, "No platform data (desc) found\n");
614     - return -ENODEV;
615     + return PTR_ERR(desc);
616     }
617    
618     cm = devm_kzalloc(&pdev->dev, sizeof(*cm), GFP_KERNEL);
619     diff --git a/drivers/scsi/ibmvscsi/ibmvscsi.c b/drivers/scsi/ibmvscsi/ibmvscsi.c
620     index 9df8a1a2299c..e60822f07653 100644
621     --- a/drivers/scsi/ibmvscsi/ibmvscsi.c
622     +++ b/drivers/scsi/ibmvscsi/ibmvscsi.c
623     @@ -96,6 +96,7 @@ static int client_reserve = 1;
624     static char partition_name[96] = "UNKNOWN";
625     static unsigned int partition_number = -1;
626     static LIST_HEAD(ibmvscsi_head);
627     +static DEFINE_SPINLOCK(ibmvscsi_driver_lock);
628    
629     static struct scsi_transport_template *ibmvscsi_transport_template;
630    
631     @@ -2271,7 +2272,9 @@ static int ibmvscsi_probe(struct vio_dev *vdev, const struct vio_device_id *id)
632     }
633    
634     dev_set_drvdata(&vdev->dev, hostdata);
635     + spin_lock(&ibmvscsi_driver_lock);
636     list_add_tail(&hostdata->host_list, &ibmvscsi_head);
637     + spin_unlock(&ibmvscsi_driver_lock);
638     return 0;
639    
640     add_srp_port_failed:
641     @@ -2293,15 +2296,27 @@ static int ibmvscsi_probe(struct vio_dev *vdev, const struct vio_device_id *id)
642     static int ibmvscsi_remove(struct vio_dev *vdev)
643     {
644     struct ibmvscsi_host_data *hostdata = dev_get_drvdata(&vdev->dev);
645     - list_del(&hostdata->host_list);
646     - unmap_persist_bufs(hostdata);
647     + unsigned long flags;
648     +
649     + srp_remove_host(hostdata->host);
650     + scsi_remove_host(hostdata->host);
651     +
652     + purge_requests(hostdata, DID_ERROR);
653     +
654     + spin_lock_irqsave(hostdata->host->host_lock, flags);
655     release_event_pool(&hostdata->pool, hostdata);
656     + spin_unlock_irqrestore(hostdata->host->host_lock, flags);
657     +
658     ibmvscsi_release_crq_queue(&hostdata->queue, hostdata,
659     max_events);
660    
661     kthread_stop(hostdata->work_thread);
662     - srp_remove_host(hostdata->host);
663     - scsi_remove_host(hostdata->host);
664     + unmap_persist_bufs(hostdata);
665     +
666     + spin_lock(&ibmvscsi_driver_lock);
667     + list_del(&hostdata->host_list);
668     + spin_unlock(&ibmvscsi_driver_lock);
669     +
670     scsi_host_put(hostdata->host);
671    
672     return 0;
673     diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c
674     index a2d701775c49..3d0db37d64ad 100644
675     --- a/fs/cifs/smb2pdu.c
676     +++ b/fs/cifs/smb2pdu.c
677     @@ -1500,9 +1500,16 @@ SMB2_tcon(const unsigned int xid, struct cifs_ses *ses, const char *tree,
678     iov[1].iov_base = unc_path;
679     iov[1].iov_len = unc_path_len;
680    
681     - /* 3.11 tcon req must be signed if not encrypted. See MS-SMB2 3.2.4.1.1 */
682     + /*
683     + * 3.11 tcon req must be signed if not encrypted. See MS-SMB2 3.2.4.1.1
684     + * unless it is guest or anonymous user. See MS-SMB2 3.2.5.3.1
685     + * (Samba servers don't always set the flag so also check if null user)
686     + */
687     if ((ses->server->dialect == SMB311_PROT_ID) &&
688     - !smb3_encryption_required(tcon))
689     + !smb3_encryption_required(tcon) &&
690     + !(ses->session_flags &
691     + (SMB2_SESSION_FLAG_IS_GUEST|SMB2_SESSION_FLAG_IS_NULL)) &&
692     + ((ses->user_name != NULL) || (ses->sectype == Kerberos)))
693     req->sync_hdr.Flags |= SMB2_FLAGS_SIGNED;
694    
695     memset(&rqst, 0, sizeof(struct smb_rqst));
696     diff --git a/fs/ext4/ext4_jbd2.h b/fs/ext4/ext4_jbd2.h
697     index 15b6dd733780..df908ef79cce 100644
698     --- a/fs/ext4/ext4_jbd2.h
699     +++ b/fs/ext4/ext4_jbd2.h
700     @@ -384,7 +384,7 @@ static inline void ext4_update_inode_fsync_trans(handle_t *handle,
701     {
702     struct ext4_inode_info *ei = EXT4_I(inode);
703    
704     - if (ext4_handle_valid(handle)) {
705     + if (ext4_handle_valid(handle) && !is_handle_aborted(handle)) {
706     ei->i_sync_tid = handle->h_transaction->t_tid;
707     if (datasync)
708     ei->i_datasync_tid = handle->h_transaction->t_tid;
709     diff --git a/fs/ext4/file.c b/fs/ext4/file.c
710     index 69d65d49837b..98ec11f69cd4 100644
711     --- a/fs/ext4/file.c
712     +++ b/fs/ext4/file.c
713     @@ -125,7 +125,7 @@ ext4_unaligned_aio(struct inode *inode, struct iov_iter *from, loff_t pos)
714     struct super_block *sb = inode->i_sb;
715     int blockmask = sb->s_blocksize - 1;
716    
717     - if (pos >= i_size_read(inode))
718     + if (pos >= ALIGN(i_size_read(inode), sb->s_blocksize))
719     return 0;
720    
721     if ((pos | iov_iter_alignment(from)) & blockmask)
722     diff --git a/fs/ext4/indirect.c b/fs/ext4/indirect.c
723     index bf7fa1507e81..9e96a0bd08d9 100644
724     --- a/fs/ext4/indirect.c
725     +++ b/fs/ext4/indirect.c
726     @@ -1387,10 +1387,14 @@ end_range:
727     partial->p + 1,
728     partial2->p,
729     (chain+n-1) - partial);
730     - BUFFER_TRACE(partial->bh, "call brelse");
731     - brelse(partial->bh);
732     - BUFFER_TRACE(partial2->bh, "call brelse");
733     - brelse(partial2->bh);
734     + while (partial > chain) {
735     + BUFFER_TRACE(partial->bh, "call brelse");
736     + brelse(partial->bh);
737     + }
738     + while (partial2 > chain2) {
739     + BUFFER_TRACE(partial2->bh, "call brelse");
740     + brelse(partial2->bh);
741     + }
742     return 0;
743     }
744    
745     diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
746     index 30779aaa9dba..1fa6f8185766 100644
747     --- a/fs/f2fs/segment.c
748     +++ b/fs/f2fs/segment.c
749     @@ -216,7 +216,8 @@ void f2fs_register_inmem_page(struct inode *inode, struct page *page)
750     }
751    
752     static int __revoke_inmem_pages(struct inode *inode,
753     - struct list_head *head, bool drop, bool recover)
754     + struct list_head *head, bool drop, bool recover,
755     + bool trylock)
756     {
757     struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
758     struct inmem_pages *cur, *tmp;
759     @@ -228,7 +229,16 @@ static int __revoke_inmem_pages(struct inode *inode,
760     if (drop)
761     trace_f2fs_commit_inmem_page(page, INMEM_DROP);
762    
763     - lock_page(page);
764     + if (trylock) {
765     + /*
766     + * to avoid deadlock in between page lock and
767     + * inmem_lock.
768     + */
769     + if (!trylock_page(page))
770     + continue;
771     + } else {
772     + lock_page(page);
773     + }
774    
775     f2fs_wait_on_page_writeback(page, DATA, true);
776    
777     @@ -317,13 +327,19 @@ void f2fs_drop_inmem_pages(struct inode *inode)
778     struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
779     struct f2fs_inode_info *fi = F2FS_I(inode);
780    
781     - mutex_lock(&fi->inmem_lock);
782     - __revoke_inmem_pages(inode, &fi->inmem_pages, true, false);
783     - spin_lock(&sbi->inode_lock[ATOMIC_FILE]);
784     - if (!list_empty(&fi->inmem_ilist))
785     - list_del_init(&fi->inmem_ilist);
786     - spin_unlock(&sbi->inode_lock[ATOMIC_FILE]);
787     - mutex_unlock(&fi->inmem_lock);
788     + while (!list_empty(&fi->inmem_pages)) {
789     + mutex_lock(&fi->inmem_lock);
790     + __revoke_inmem_pages(inode, &fi->inmem_pages,
791     + true, false, true);
792     +
793     + if (list_empty(&fi->inmem_pages)) {
794     + spin_lock(&sbi->inode_lock[ATOMIC_FILE]);
795     + if (!list_empty(&fi->inmem_ilist))
796     + list_del_init(&fi->inmem_ilist);
797     + spin_unlock(&sbi->inode_lock[ATOMIC_FILE]);
798     + }
799     + mutex_unlock(&fi->inmem_lock);
800     + }
801    
802     clear_inode_flag(inode, FI_ATOMIC_FILE);
803     fi->i_gc_failures[GC_FAILURE_ATOMIC] = 0;
804     @@ -427,12 +443,15 @@ retry:
805     * recovery or rewrite & commit last transaction. For other
806     * error number, revoking was done by filesystem itself.
807     */
808     - err = __revoke_inmem_pages(inode, &revoke_list, false, true);
809     + err = __revoke_inmem_pages(inode, &revoke_list,
810     + false, true, false);
811    
812     /* drop all uncommitted pages */
813     - __revoke_inmem_pages(inode, &fi->inmem_pages, true, false);
814     + __revoke_inmem_pages(inode, &fi->inmem_pages,
815     + true, false, false);
816     } else {
817     - __revoke_inmem_pages(inode, &revoke_list, false, false);
818     + __revoke_inmem_pages(inode, &revoke_list,
819     + false, false, false);
820     }
821    
822     return err;
823     diff --git a/fs/udf/truncate.c b/fs/udf/truncate.c
824     index b647f0bd150c..94220ba85628 100644
825     --- a/fs/udf/truncate.c
826     +++ b/fs/udf/truncate.c
827     @@ -260,6 +260,9 @@ void udf_truncate_extents(struct inode *inode)
828     epos.block = eloc;
829     epos.bh = udf_tread(sb,
830     udf_get_lb_pblock(sb, &eloc, 0));
831     + /* Error reading indirect block? */
832     + if (!epos.bh)
833     + return;
834     if (elen)
835     indirect_ext_len =
836     (elen + sb->s_blocksize - 1) >>
837     diff --git a/include/linux/ceph/libceph.h b/include/linux/ceph/libceph.h
838     index 68bb09c29ce8..0b589e684554 100644
839     --- a/include/linux/ceph/libceph.h
840     +++ b/include/linux/ceph/libceph.h
841     @@ -292,6 +292,8 @@ extern void ceph_destroy_client(struct ceph_client *client);
842     extern int __ceph_open_session(struct ceph_client *client,
843     unsigned long started);
844     extern int ceph_open_session(struct ceph_client *client);
845     +int ceph_wait_for_latest_osdmap(struct ceph_client *client,
846     + unsigned long timeout);
847    
848     /* pagevec.c */
849     extern void ceph_release_page_vector(struct page **pages, int num_pages);
850     diff --git a/kernel/futex.c b/kernel/futex.c
851     index c5fca746edc4..5a26d843a015 100644
852     --- a/kernel/futex.c
853     +++ b/kernel/futex.c
854     @@ -3432,6 +3432,10 @@ int handle_futex_death(u32 __user *uaddr, struct task_struct *curr, int pi)
855     {
856     u32 uval, uninitialized_var(nval), mval;
857    
858     + /* Futex address must be 32bit aligned */
859     + if ((((unsigned long)uaddr) % sizeof(*uaddr)) != 0)
860     + return -1;
861     +
862     retry:
863     if (get_user(uval, uaddr))
864     return -1;
865     diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
866     index 26b57e24476f..0cbdbbb0729f 100644
867     --- a/kernel/locking/lockdep.c
868     +++ b/kernel/locking/lockdep.c
869     @@ -3567,6 +3567,9 @@ __lock_set_class(struct lockdep_map *lock, const char *name,
870     unsigned int depth;
871     int i;
872    
873     + if (unlikely(!debug_locks))
874     + return 0;
875     +
876     depth = curr->lockdep_depth;
877     /*
878     * This function is about (re)setting the class of a held lock,
879     diff --git a/net/bluetooth/hci_sock.c b/net/bluetooth/hci_sock.c
880     index 1506e1632394..d4e2a166ae17 100644
881     --- a/net/bluetooth/hci_sock.c
882     +++ b/net/bluetooth/hci_sock.c
883     @@ -831,8 +831,6 @@ static int hci_sock_release(struct socket *sock)
884     if (!sk)
885     return 0;
886    
887     - hdev = hci_pi(sk)->hdev;
888     -
889     switch (hci_pi(sk)->channel) {
890     case HCI_CHANNEL_MONITOR:
891     atomic_dec(&monitor_promisc);
892     @@ -854,6 +852,7 @@ static int hci_sock_release(struct socket *sock)
893    
894     bt_sock_unlink(&hci_sk_list, sk);
895    
896     + hdev = hci_pi(sk)->hdev;
897     if (hdev) {
898     if (hci_pi(sk)->channel == HCI_CHANNEL_USER) {
899     /* When releasing a user channel exclusive access,
900     diff --git a/net/bridge/netfilter/ebtables.c b/net/bridge/netfilter/ebtables.c
901     index 6693e209efe8..f77888ec93f1 100644
902     --- a/net/bridge/netfilter/ebtables.c
903     +++ b/net/bridge/netfilter/ebtables.c
904     @@ -31,10 +31,6 @@
905     /* needed for logical [in,out]-dev filtering */
906     #include "../br_private.h"
907    
908     -#define BUGPRINT(format, args...) printk("kernel msg: ebtables bug: please "\
909     - "report to author: "format, ## args)
910     -/* #define BUGPRINT(format, args...) */
911     -
912     /* Each cpu has its own set of counters, so there is no need for write_lock in
913     * the softirq
914     * For reading or updating the counters, the user context needs to
915     @@ -466,8 +462,6 @@ static int ebt_verify_pointers(const struct ebt_replace *repl,
916     /* we make userspace set this right,
917     * so there is no misunderstanding
918     */
919     - BUGPRINT("EBT_ENTRY_OR_ENTRIES shouldn't be set "
920     - "in distinguisher\n");
921     return -EINVAL;
922     }
923     if (i != NF_BR_NUMHOOKS)
924     @@ -485,18 +479,14 @@ static int ebt_verify_pointers(const struct ebt_replace *repl,
925     offset += e->next_offset;
926     }
927     }
928     - if (offset != limit) {
929     - BUGPRINT("entries_size too small\n");
930     + if (offset != limit)
931     return -EINVAL;
932     - }
933    
934     /* check if all valid hooks have a chain */
935     for (i = 0; i < NF_BR_NUMHOOKS; i++) {
936     if (!newinfo->hook_entry[i] &&
937     - (valid_hooks & (1 << i))) {
938     - BUGPRINT("Valid hook without chain\n");
939     + (valid_hooks & (1 << i)))
940     return -EINVAL;
941     - }
942     }
943     return 0;
944     }
945     @@ -523,26 +513,20 @@ ebt_check_entry_size_and_hooks(const struct ebt_entry *e,
946     /* this checks if the previous chain has as many entries
947     * as it said it has
948     */
949     - if (*n != *cnt) {
950     - BUGPRINT("nentries does not equal the nr of entries "
951     - "in the chain\n");
952     + if (*n != *cnt)
953     return -EINVAL;
954     - }
955     +
956     if (((struct ebt_entries *)e)->policy != EBT_DROP &&
957     ((struct ebt_entries *)e)->policy != EBT_ACCEPT) {
958     /* only RETURN from udc */
959     if (i != NF_BR_NUMHOOKS ||
960     - ((struct ebt_entries *)e)->policy != EBT_RETURN) {
961     - BUGPRINT("bad policy\n");
962     + ((struct ebt_entries *)e)->policy != EBT_RETURN)
963     return -EINVAL;
964     - }
965     }
966     if (i == NF_BR_NUMHOOKS) /* it's a user defined chain */
967     (*udc_cnt)++;
968     - if (((struct ebt_entries *)e)->counter_offset != *totalcnt) {
969     - BUGPRINT("counter_offset != totalcnt");
970     + if (((struct ebt_entries *)e)->counter_offset != *totalcnt)
971     return -EINVAL;
972     - }
973     *n = ((struct ebt_entries *)e)->nentries;
974     *cnt = 0;
975     return 0;
976     @@ -550,15 +534,13 @@ ebt_check_entry_size_and_hooks(const struct ebt_entry *e,
977     /* a plain old entry, heh */
978     if (sizeof(struct ebt_entry) > e->watchers_offset ||
979     e->watchers_offset > e->target_offset ||
980     - e->target_offset >= e->next_offset) {
981     - BUGPRINT("entry offsets not in right order\n");
982     + e->target_offset >= e->next_offset)
983     return -EINVAL;
984     - }
985     +
986     /* this is not checked anywhere else */
987     - if (e->next_offset - e->target_offset < sizeof(struct ebt_entry_target)) {
988     - BUGPRINT("target size too small\n");
989     + if (e->next_offset - e->target_offset < sizeof(struct ebt_entry_target))
990     return -EINVAL;
991     - }
992     +
993     (*cnt)++;
994     (*totalcnt)++;
995     return 0;
996     @@ -678,18 +660,15 @@ ebt_check_entry(struct ebt_entry *e, struct net *net,
997     if (e->bitmask == 0)
998     return 0;
999    
1000     - if (e->bitmask & ~EBT_F_MASK) {
1001     - BUGPRINT("Unknown flag for bitmask\n");
1002     + if (e->bitmask & ~EBT_F_MASK)
1003     return -EINVAL;
1004     - }
1005     - if (e->invflags & ~EBT_INV_MASK) {
1006     - BUGPRINT("Unknown flag for inv bitmask\n");
1007     +
1008     + if (e->invflags & ~EBT_INV_MASK)
1009     return -EINVAL;
1010     - }
1011     - if ((e->bitmask & EBT_NOPROTO) && (e->bitmask & EBT_802_3)) {
1012     - BUGPRINT("NOPROTO & 802_3 not allowed\n");
1013     +
1014     + if ((e->bitmask & EBT_NOPROTO) && (e->bitmask & EBT_802_3))
1015     return -EINVAL;
1016     - }
1017     +
1018     /* what hook do we belong to? */
1019     for (i = 0; i < NF_BR_NUMHOOKS; i++) {
1020     if (!newinfo->hook_entry[i])
1021     @@ -748,13 +727,11 @@ ebt_check_entry(struct ebt_entry *e, struct net *net,
1022     t->u.target = target;
1023     if (t->u.target == &ebt_standard_target) {
1024     if (gap < sizeof(struct ebt_standard_target)) {
1025     - BUGPRINT("Standard target size too big\n");
1026     ret = -EFAULT;
1027     goto cleanup_watchers;
1028     }
1029     if (((struct ebt_standard_target *)t)->verdict <
1030     -NUM_STANDARD_TARGETS) {
1031     - BUGPRINT("Invalid standard target\n");
1032     ret = -EFAULT;
1033     goto cleanup_watchers;
1034     }
1035     @@ -813,10 +790,9 @@ static int check_chainloops(const struct ebt_entries *chain, struct ebt_cl_stack
1036     if (strcmp(t->u.name, EBT_STANDARD_TARGET))
1037     goto letscontinue;
1038     if (e->target_offset + sizeof(struct ebt_standard_target) >
1039     - e->next_offset) {
1040     - BUGPRINT("Standard target size too big\n");
1041     + e->next_offset)
1042     return -1;
1043     - }
1044     +
1045     verdict = ((struct ebt_standard_target *)t)->verdict;
1046     if (verdict >= 0) { /* jump to another chain */
1047     struct ebt_entries *hlp2 =
1048     @@ -825,14 +801,12 @@ static int check_chainloops(const struct ebt_entries *chain, struct ebt_cl_stack
1049     if (hlp2 == cl_s[i].cs.chaininfo)
1050     break;
1051     /* bad destination or loop */
1052     - if (i == udc_cnt) {
1053     - BUGPRINT("bad destination\n");
1054     + if (i == udc_cnt)
1055     return -1;
1056     - }
1057     - if (cl_s[i].cs.n) {
1058     - BUGPRINT("loop\n");
1059     +
1060     + if (cl_s[i].cs.n)
1061     return -1;
1062     - }
1063     +
1064     if (cl_s[i].hookmask & (1 << hooknr))
1065     goto letscontinue;
1066     /* this can't be 0, so the loop test is correct */
1067     @@ -865,24 +839,21 @@ static int translate_table(struct net *net, const char *name,
1068     i = 0;
1069     while (i < NF_BR_NUMHOOKS && !newinfo->hook_entry[i])
1070     i++;
1071     - if (i == NF_BR_NUMHOOKS) {
1072     - BUGPRINT("No valid hooks specified\n");
1073     + if (i == NF_BR_NUMHOOKS)
1074     return -EINVAL;
1075     - }
1076     - if (newinfo->hook_entry[i] != (struct ebt_entries *)newinfo->entries) {
1077     - BUGPRINT("Chains don't start at beginning\n");
1078     +
1079     + if (newinfo->hook_entry[i] != (struct ebt_entries *)newinfo->entries)
1080     return -EINVAL;
1081     - }
1082     +
1083     /* make sure chains are ordered after each other in same order
1084     * as their corresponding hooks
1085     */
1086     for (j = i + 1; j < NF_BR_NUMHOOKS; j++) {
1087     if (!newinfo->hook_entry[j])
1088     continue;
1089     - if (newinfo->hook_entry[j] <= newinfo->hook_entry[i]) {
1090     - BUGPRINT("Hook order must be followed\n");
1091     + if (newinfo->hook_entry[j] <= newinfo->hook_entry[i])
1092     return -EINVAL;
1093     - }
1094     +
1095     i = j;
1096     }
1097    
1098     @@ -900,15 +871,11 @@ static int translate_table(struct net *net, const char *name,
1099     if (ret != 0)
1100     return ret;
1101    
1102     - if (i != j) {
1103     - BUGPRINT("nentries does not equal the nr of entries in the "
1104     - "(last) chain\n");
1105     + if (i != j)
1106     return -EINVAL;
1107     - }
1108     - if (k != newinfo->nentries) {
1109     - BUGPRINT("Total nentries is wrong\n");
1110     +
1111     + if (k != newinfo->nentries)
1112     return -EINVAL;
1113     - }
1114    
1115     /* get the location of the udc, put them in an array
1116     * while we're at it, allocate the chainstack
1117     @@ -942,7 +909,6 @@ static int translate_table(struct net *net, const char *name,
1118     ebt_get_udc_positions, newinfo, &i, cl_s);
1119     /* sanity check */
1120     if (i != udc_cnt) {
1121     - BUGPRINT("i != udc_cnt\n");
1122     vfree(cl_s);
1123     return -EFAULT;
1124     }
1125     @@ -1042,7 +1008,6 @@ static int do_replace_finish(struct net *net, struct ebt_replace *repl,
1126     goto free_unlock;
1127    
1128     if (repl->num_counters && repl->num_counters != t->private->nentries) {
1129     - BUGPRINT("Wrong nr. of counters requested\n");
1130     ret = -EINVAL;
1131     goto free_unlock;
1132     }
1133     @@ -1118,15 +1083,12 @@ static int do_replace(struct net *net, const void __user *user,
1134     if (copy_from_user(&tmp, user, sizeof(tmp)) != 0)
1135     return -EFAULT;
1136    
1137     - if (len != sizeof(tmp) + tmp.entries_size) {
1138     - BUGPRINT("Wrong len argument\n");
1139     + if (len != sizeof(tmp) + tmp.entries_size)
1140     return -EINVAL;
1141     - }
1142    
1143     - if (tmp.entries_size == 0) {
1144     - BUGPRINT("Entries_size never zero\n");
1145     + if (tmp.entries_size == 0)
1146     return -EINVAL;
1147     - }
1148     +
1149     /* overflow check */
1150     if (tmp.nentries >= ((INT_MAX - sizeof(struct ebt_table_info)) /
1151     NR_CPUS - SMP_CACHE_BYTES) / sizeof(struct ebt_counter))
1152     @@ -1153,7 +1115,6 @@ static int do_replace(struct net *net, const void __user *user,
1153     }
1154     if (copy_from_user(
1155     newinfo->entries, tmp.entries, tmp.entries_size) != 0) {
1156     - BUGPRINT("Couldn't copy entries from userspace\n");
1157     ret = -EFAULT;
1158     goto free_entries;
1159     }
1160     @@ -1194,10 +1155,8 @@ int ebt_register_table(struct net *net, const struct ebt_table *input_table,
1161    
1162     if (input_table == NULL || (repl = input_table->table) == NULL ||
1163     repl->entries == NULL || repl->entries_size == 0 ||
1164     - repl->counters != NULL || input_table->private != NULL) {
1165     - BUGPRINT("Bad table data for ebt_register_table!!!\n");
1166     + repl->counters != NULL || input_table->private != NULL)
1167     return -EINVAL;
1168     - }
1169    
1170     /* Don't add one table to multiple lists. */
1171     table = kmemdup(input_table, sizeof(struct ebt_table), GFP_KERNEL);
1172     @@ -1235,13 +1194,10 @@ int ebt_register_table(struct net *net, const struct ebt_table *input_table,
1173     ((char *)repl->hook_entry[i] - repl->entries);
1174     }
1175     ret = translate_table(net, repl->name, newinfo);
1176     - if (ret != 0) {
1177     - BUGPRINT("Translate_table failed\n");
1178     + if (ret != 0)
1179     goto free_chainstack;
1180     - }
1181    
1182     if (table->check && table->check(newinfo, table->valid_hooks)) {
1183     - BUGPRINT("The table doesn't like its own initial data, lol\n");
1184     ret = -EINVAL;
1185     goto free_chainstack;
1186     }
1187     @@ -1252,7 +1208,6 @@ int ebt_register_table(struct net *net, const struct ebt_table *input_table,
1188     list_for_each_entry(t, &net->xt.tables[NFPROTO_BRIDGE], list) {
1189     if (strcmp(t->name, table->name) == 0) {
1190     ret = -EEXIST;
1191     - BUGPRINT("Table name already exists\n");
1192     goto free_unlock;
1193     }
1194     }
1195     @@ -1320,7 +1275,6 @@ static int do_update_counters(struct net *net, const char *name,
1196     goto free_tmp;
1197    
1198     if (num_counters != t->private->nentries) {
1199     - BUGPRINT("Wrong nr of counters\n");
1200     ret = -EINVAL;
1201     goto unlock_mutex;
1202     }
1203     @@ -1447,10 +1401,8 @@ static int copy_counters_to_user(struct ebt_table *t,
1204     if (num_counters == 0)
1205     return 0;
1206    
1207     - if (num_counters != nentries) {
1208     - BUGPRINT("Num_counters wrong\n");
1209     + if (num_counters != nentries)
1210     return -EINVAL;
1211     - }
1212    
1213     counterstmp = vmalloc(array_size(nentries, sizeof(*counterstmp)));
1214     if (!counterstmp)
1215     @@ -1496,15 +1448,11 @@ static int copy_everything_to_user(struct ebt_table *t, void __user *user,
1216     (tmp.num_counters ? nentries * sizeof(struct ebt_counter) : 0))
1217     return -EINVAL;
1218    
1219     - if (tmp.nentries != nentries) {
1220     - BUGPRINT("Nentries wrong\n");
1221     + if (tmp.nentries != nentries)
1222     return -EINVAL;
1223     - }
1224    
1225     - if (tmp.entries_size != entries_size) {
1226     - BUGPRINT("Wrong size\n");
1227     + if (tmp.entries_size != entries_size)
1228     return -EINVAL;
1229     - }
1230    
1231     ret = copy_counters_to_user(t, oldcounters, tmp.counters,
1232     tmp.num_counters, nentries);
1233     @@ -1576,7 +1524,6 @@ static int do_ebt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len)
1234     }
1235     mutex_unlock(&ebt_mutex);
1236     if (copy_to_user(user, &tmp, *len) != 0) {
1237     - BUGPRINT("c2u Didn't work\n");
1238     ret = -EFAULT;
1239     break;
1240     }
1241     diff --git a/net/ceph/ceph_common.c b/net/ceph/ceph_common.c
1242     index 87afb9ec4c68..20f0c3d7ed50 100644
1243     --- a/net/ceph/ceph_common.c
1244     +++ b/net/ceph/ceph_common.c
1245     @@ -729,7 +729,6 @@ int __ceph_open_session(struct ceph_client *client, unsigned long started)
1246     }
1247     EXPORT_SYMBOL(__ceph_open_session);
1248    
1249     -
1250     int ceph_open_session(struct ceph_client *client)
1251     {
1252     int ret;
1253     @@ -745,6 +744,23 @@ int ceph_open_session(struct ceph_client *client)
1254     }
1255     EXPORT_SYMBOL(ceph_open_session);
1256    
1257     +int ceph_wait_for_latest_osdmap(struct ceph_client *client,
1258     + unsigned long timeout)
1259     +{
1260     + u64 newest_epoch;
1261     + int ret;
1262     +
1263     + ret = ceph_monc_get_version(&client->monc, "osdmap", &newest_epoch);
1264     + if (ret)
1265     + return ret;
1266     +
1267     + if (client->osdc.osdmap->epoch >= newest_epoch)
1268     + return 0;
1269     +
1270     + ceph_osdc_maybe_request_map(&client->osdc);
1271     + return ceph_monc_wait_osdmap(&client->monc, newest_epoch, timeout);
1272     +}
1273     +EXPORT_SYMBOL(ceph_wait_for_latest_osdmap);
1274    
1275     static int __init init_ceph_lib(void)
1276     {
1277     diff --git a/net/ceph/mon_client.c b/net/ceph/mon_client.c
1278     index 18deb3d889c4..a53e4fbb6319 100644
1279     --- a/net/ceph/mon_client.c
1280     +++ b/net/ceph/mon_client.c
1281     @@ -922,6 +922,15 @@ int ceph_monc_blacklist_add(struct ceph_mon_client *monc,
1282     mutex_unlock(&monc->mutex);
1283    
1284     ret = wait_generic_request(req);
1285     + if (!ret)
1286     + /*
1287     + * Make sure we have the osdmap that includes the blacklist
1288     + * entry. This is needed to ensure that the OSDs pick up the
1289     + * new blacklist before processing any future requests from
1290     + * this client.
1291     + */
1292     + ret = ceph_wait_for_latest_osdmap(monc->client, 0);
1293     +
1294     out:
1295     put_generic_request(req);
1296     return ret;
1297     diff --git a/sound/ac97/bus.c b/sound/ac97/bus.c
1298     index 9f0c480489ef..9cbf6927abe9 100644
1299     --- a/sound/ac97/bus.c
1300     +++ b/sound/ac97/bus.c
1301     @@ -84,7 +84,7 @@ ac97_of_get_child_device(struct ac97_controller *ac97_ctrl, int idx,
1302     if ((idx != of_property_read_u32(node, "reg", &reg)) ||
1303     !of_device_is_compatible(node, compat))
1304     continue;
1305     - return of_node_get(node);
1306     + return node;
1307     }
1308    
1309     return NULL;
1310     diff --git a/sound/firewire/motu/motu.c b/sound/firewire/motu/motu.c
1311     index 300d31b6f191..743015e87a96 100644
1312     --- a/sound/firewire/motu/motu.c
1313     +++ b/sound/firewire/motu/motu.c
1314     @@ -36,7 +36,7 @@ static void name_card(struct snd_motu *motu)
1315     fw_csr_iterator_init(&it, motu->unit->directory);
1316     while (fw_csr_iterator_next(&it, &key, &val)) {
1317     switch (key) {
1318     - case CSR_VERSION:
1319     + case CSR_MODEL:
1320     version = val;
1321     break;
1322     }
1323     @@ -46,7 +46,7 @@ static void name_card(struct snd_motu *motu)
1324     strcpy(motu->card->shortname, motu->spec->name);
1325     strcpy(motu->card->mixername, motu->spec->name);
1326     snprintf(motu->card->longname, sizeof(motu->card->longname),
1327     - "MOTU %s (version:%d), GUID %08x%08x at %s, S%d",
1328     + "MOTU %s (version:%06x), GUID %08x%08x at %s, S%d",
1329     motu->spec->name, version,
1330     fw_dev->config_rom[3], fw_dev->config_rom[4],
1331     dev_name(&motu->unit->device), 100 << fw_dev->max_speed);
1332     @@ -258,20 +258,20 @@ static const struct snd_motu_spec motu_audio_express = {
1333     #define SND_MOTU_DEV_ENTRY(model, data) \
1334     { \
1335     .match_flags = IEEE1394_MATCH_VENDOR_ID | \
1336     - IEEE1394_MATCH_MODEL_ID | \
1337     - IEEE1394_MATCH_SPECIFIER_ID, \
1338     + IEEE1394_MATCH_SPECIFIER_ID | \
1339     + IEEE1394_MATCH_VERSION, \
1340     .vendor_id = OUI_MOTU, \
1341     - .model_id = model, \
1342     .specifier_id = OUI_MOTU, \
1343     + .version = model, \
1344     .driver_data = (kernel_ulong_t)data, \
1345     }
1346    
1347     static const struct ieee1394_device_id motu_id_table[] = {
1348     - SND_MOTU_DEV_ENTRY(0x101800, &motu_828mk2),
1349     - SND_MOTU_DEV_ENTRY(0x107800, &snd_motu_spec_traveler),
1350     - SND_MOTU_DEV_ENTRY(0x106800, &motu_828mk3), /* FireWire only. */
1351     - SND_MOTU_DEV_ENTRY(0x100800, &motu_828mk3), /* Hybrid. */
1352     - SND_MOTU_DEV_ENTRY(0x104800, &motu_audio_express),
1353     + SND_MOTU_DEV_ENTRY(0x000003, &motu_828mk2),
1354     + SND_MOTU_DEV_ENTRY(0x000009, &snd_motu_spec_traveler),
1355     + SND_MOTU_DEV_ENTRY(0x000015, &motu_828mk3), /* FireWire only. */
1356     + SND_MOTU_DEV_ENTRY(0x000035, &motu_828mk3), /* Hybrid. */
1357     + SND_MOTU_DEV_ENTRY(0x000033, &motu_audio_express),
1358     { }
1359     };
1360     MODULE_DEVICE_TABLE(ieee1394, motu_id_table);
1361     diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
1362     index 26d348b47867..21de8145f1a6 100644
1363     --- a/sound/pci/hda/hda_codec.c
1364     +++ b/sound/pci/hda/hda_codec.c
1365     @@ -2909,6 +2909,7 @@ static void hda_call_codec_resume(struct hda_codec *codec)
1366     hda_jackpoll_work(&codec->jackpoll_work.work);
1367     else
1368     snd_hda_jack_report_sync(codec);
1369     + codec->core.dev.power.power_state = PMSG_ON;
1370     snd_hdac_leave_pm(&codec->core);
1371     }
1372    
1373     @@ -2942,10 +2943,62 @@ static int hda_codec_runtime_resume(struct device *dev)
1374     }
1375     #endif /* CONFIG_PM */
1376    
1377     +#ifdef CONFIG_PM_SLEEP
1378     +static int hda_codec_force_resume(struct device *dev)
1379     +{
1380     + int ret;
1381     +
1382     + /* The get/put pair below enforces the runtime resume even if the
1383     + * device hasn't been used at suspend time. This trick is needed to
1384     + * update the jack state change during the sleep.
1385     + */
1386     + pm_runtime_get_noresume(dev);
1387     + ret = pm_runtime_force_resume(dev);
1388     + pm_runtime_put(dev);
1389     + return ret;
1390     +}
1391     +
1392     +static int hda_codec_pm_suspend(struct device *dev)
1393     +{
1394     + dev->power.power_state = PMSG_SUSPEND;
1395     + return pm_runtime_force_suspend(dev);
1396     +}
1397     +
1398     +static int hda_codec_pm_resume(struct device *dev)
1399     +{
1400     + dev->power.power_state = PMSG_RESUME;
1401     + return hda_codec_force_resume(dev);
1402     +}
1403     +
1404     +static int hda_codec_pm_freeze(struct device *dev)
1405     +{
1406     + dev->power.power_state = PMSG_FREEZE;
1407     + return pm_runtime_force_suspend(dev);
1408     +}
1409     +
1410     +static int hda_codec_pm_thaw(struct device *dev)
1411     +{
1412     + dev->power.power_state = PMSG_THAW;
1413     + return hda_codec_force_resume(dev);
1414     +}
1415     +
1416     +static int hda_codec_pm_restore(struct device *dev)
1417     +{
1418     + dev->power.power_state = PMSG_RESTORE;
1419     + return hda_codec_force_resume(dev);
1420     +}
1421     +#endif /* CONFIG_PM_SLEEP */
1422     +
1423     /* referred in hda_bind.c */
1424     const struct dev_pm_ops hda_codec_driver_pm = {
1425     - SET_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend,
1426     - pm_runtime_force_resume)
1427     +#ifdef CONFIG_PM_SLEEP
1428     + .suspend = hda_codec_pm_suspend,
1429     + .resume = hda_codec_pm_resume,
1430     + .freeze = hda_codec_pm_freeze,
1431     + .thaw = hda_codec_pm_thaw,
1432     + .poweroff = hda_codec_pm_suspend,
1433     + .restore = hda_codec_pm_restore,
1434     +#endif /* CONFIG_PM_SLEEP */
1435     SET_RUNTIME_PM_OPS(hda_codec_runtime_suspend, hda_codec_runtime_resume,
1436     NULL)
1437     };
1438     diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
1439     index 1bb7613701ac..7572b8cc7127 100644
1440     --- a/sound/pci/hda/hda_intel.c
1441     +++ b/sound/pci/hda/hda_intel.c
1442     @@ -2274,10 +2274,12 @@ static struct snd_pci_quirk power_save_blacklist[] = {
1443     SND_PCI_QUIRK(0x8086, 0x2057, "Intel NUC5i7RYB", 0),
1444     /* https://bugzilla.redhat.com/show_bug.cgi?id=1520902 */
1445     SND_PCI_QUIRK(0x8086, 0x2068, "Intel NUC7i3BNB", 0),
1446     - /* https://bugzilla.redhat.com/show_bug.cgi?id=1572975 */
1447     - SND_PCI_QUIRK(0x17aa, 0x36a7, "Lenovo C50 All in one", 0),
1448     /* https://bugzilla.kernel.org/show_bug.cgi?id=198611 */
1449     SND_PCI_QUIRK(0x17aa, 0x2227, "Lenovo X1 Carbon 3rd Gen", 0),
1450     + /* https://bugzilla.redhat.com/show_bug.cgi?id=1689623 */
1451     + SND_PCI_QUIRK(0x17aa, 0x367b, "Lenovo IdeaCentre B550", 0),
1452     + /* https://bugzilla.redhat.com/show_bug.cgi?id=1572975 */
1453     + SND_PCI_QUIRK(0x17aa, 0x36a7, "Lenovo C50 All in one", 0),
1454     {}
1455     };
1456     #endif /* CONFIG_PM */
1457     diff --git a/sound/pci/hda/patch_ca0132.c b/sound/pci/hda/patch_ca0132.c
1458     index dffd60cebc31..80f73810b21b 100644
1459     --- a/sound/pci/hda/patch_ca0132.c
1460     +++ b/sound/pci/hda/patch_ca0132.c
1461     @@ -7394,7 +7394,7 @@ static void ca0132_free(struct hda_codec *codec)
1462     ca0132_exit_chip(codec);
1463    
1464     snd_hda_power_down(codec);
1465     - if (spec->mem_base)
1466     + if (IS_ENABLED(CONFIG_PCI) && spec->mem_base)
1467     pci_iounmap(codec->bus->pci, spec->mem_base);
1468     kfree(spec->spec_init_verbs);
1469     kfree(codec->spec);
1470     diff --git a/sound/x86/intel_hdmi_audio.c b/sound/x86/intel_hdmi_audio.c
1471     index fa7dca5a68c8..ec50d1d0b5fe 100644
1472     --- a/sound/x86/intel_hdmi_audio.c
1473     +++ b/sound/x86/intel_hdmi_audio.c
1474     @@ -1900,7 +1900,6 @@ static int hdmi_lpe_audio_probe(struct platform_device *pdev)
1475    
1476     pm_runtime_use_autosuspend(&pdev->dev);
1477     pm_runtime_mark_last_busy(&pdev->dev);
1478     - pm_runtime_set_active(&pdev->dev);
1479    
1480     dev_dbg(&pdev->dev, "%s: handle pending notification\n", __func__);
1481     for_each_port(card_ctx, port) {
1482     diff --git a/tools/objtool/check.c b/tools/objtool/check.c
1483     index 2928939b98ec..550f17611bd7 100644
1484     --- a/tools/objtool/check.c
1485     +++ b/tools/objtool/check.c
1486     @@ -2157,9 +2157,10 @@ static void cleanup(struct objtool_file *file)
1487     elf_close(file->elf);
1488     }
1489    
1490     +static struct objtool_file file;
1491     +
1492     int check(const char *_objname, bool orc)
1493     {
1494     - struct objtool_file file;
1495     int ret, warnings = 0;
1496    
1497     objname = _objname;
1498     diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c
1499     index f119eb628dbb..a22e1f538aea 100644
1500     --- a/tools/perf/util/probe-event.c
1501     +++ b/tools/perf/util/probe-event.c
1502     @@ -157,8 +157,10 @@ static struct map *kernel_get_module_map(const char *module)
1503     if (module && strchr(module, '/'))
1504     return dso__new_map(module);
1505    
1506     - if (!module)
1507     - module = "kernel";
1508     + if (!module) {
1509     + pos = machine__kernel_map(host_machine);
1510     + return map__get(pos);
1511     + }
1512    
1513     for (pos = maps__first(maps); pos; pos = map__next(pos)) {
1514     /* short_name is "[module]" */