Magellan Linux

Annotation of /trunk/kernel-alx-legacy/patches-4.9/0265-4.9.166-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3608 - (hide annotations) (download)
Fri Aug 14 07:34:29 2020 UTC (3 years, 9 months ago) by niro
File size: 24691 byte(s)
-added kerenl-alx-legacy pkg
1 niro 3608 diff --git a/Makefile b/Makefile
2     index 9b61da532c42..90478086eff5 100644
3     --- a/Makefile
4     +++ b/Makefile
5     @@ -1,6 +1,6 @@
6     VERSION = 4
7     PATCHLEVEL = 9
8     -SUBLEVEL = 165
9     +SUBLEVEL = 166
10     EXTRAVERSION =
11     NAME = Roaring Lionus
12    
13     diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c
14     index 5963be2e05f0..28bef94cf792 100644
15     --- a/arch/arm64/kernel/traps.c
16     +++ b/arch/arm64/kernel/traps.c
17     @@ -266,10 +266,12 @@ void die(const char *str, struct pt_regs *regs, int err)
18     {
19     struct thread_info *thread = current_thread_info();
20     int ret;
21     + unsigned long flags;
22     +
23     + raw_spin_lock_irqsave(&die_lock, flags);
24    
25     oops_enter();
26    
27     - raw_spin_lock_irq(&die_lock);
28     console_verbose();
29     bust_spinlocks(1);
30     ret = __die(str, err, thread, regs);
31     @@ -279,13 +281,15 @@ void die(const char *str, struct pt_regs *regs, int err)
32    
33     bust_spinlocks(0);
34     add_taint(TAINT_DIE, LOCKDEP_NOW_UNRELIABLE);
35     - raw_spin_unlock_irq(&die_lock);
36     oops_exit();
37    
38     if (in_interrupt())
39     panic("Fatal exception in interrupt");
40     if (panic_on_oops)
41     panic("Fatal exception");
42     +
43     + raw_spin_unlock_irqrestore(&die_lock, flags);
44     +
45     if (ret != NOTIFY_STOP)
46     do_exit(SIGSEGV);
47     }
48     diff --git a/arch/mips/include/asm/jump_label.h b/arch/mips/include/asm/jump_label.h
49     index e77672539e8e..e4456e450f94 100644
50     --- a/arch/mips/include/asm/jump_label.h
51     +++ b/arch/mips/include/asm/jump_label.h
52     @@ -21,15 +21,15 @@
53     #endif
54    
55     #ifdef CONFIG_CPU_MICROMIPS
56     -#define NOP_INSN "nop32"
57     +#define B_INSN "b32"
58     #else
59     -#define NOP_INSN "nop"
60     +#define B_INSN "b"
61     #endif
62    
63     static __always_inline bool arch_static_branch(struct static_key *key, bool branch)
64     {
65     - asm_volatile_goto("1:\t" NOP_INSN "\n\t"
66     - "nop\n\t"
67     + asm_volatile_goto("1:\t" B_INSN " 2f\n\t"
68     + "2:\tnop\n\t"
69     ".pushsection __jump_table, \"aw\"\n\t"
70     WORD_INSN " 1b, %l[l_yes], %0\n\t"
71     ".popsection\n\t"
72     diff --git a/arch/mips/kernel/vmlinux.lds.S b/arch/mips/kernel/vmlinux.lds.S
73     index f0a0e6d62be3..2d965d91fee4 100644
74     --- a/arch/mips/kernel/vmlinux.lds.S
75     +++ b/arch/mips/kernel/vmlinux.lds.S
76     @@ -138,6 +138,13 @@ SECTIONS
77     PERCPU_SECTION(1 << CONFIG_MIPS_L1_CACHE_SHIFT)
78     #endif
79    
80     +#ifdef CONFIG_MIPS_ELF_APPENDED_DTB
81     + .appended_dtb : AT(ADDR(.appended_dtb) - LOAD_OFFSET) {
82     + *(.appended_dtb)
83     + KEEP(*(.appended_dtb))
84     + }
85     +#endif
86     +
87     #ifdef CONFIG_RELOCATABLE
88     . = ALIGN(4);
89    
90     @@ -162,11 +169,6 @@ SECTIONS
91     __appended_dtb = .;
92     /* leave space for appended DTB */
93     . += 0x100000;
94     -#elif defined(CONFIG_MIPS_ELF_APPENDED_DTB)
95     - .appended_dtb : AT(ADDR(.appended_dtb) - LOAD_OFFSET) {
96     - *(.appended_dtb)
97     - KEEP(*(.appended_dtb))
98     - }
99     #endif
100     /*
101     * Align to 64K in attempt to eliminate holes before the
102     diff --git a/arch/mips/loongson64/lemote-2f/irq.c b/arch/mips/loongson64/lemote-2f/irq.c
103     index cab5f43e0e29..d371f0294cbb 100644
104     --- a/arch/mips/loongson64/lemote-2f/irq.c
105     +++ b/arch/mips/loongson64/lemote-2f/irq.c
106     @@ -102,7 +102,7 @@ static struct irqaction ip6_irqaction = {
107     static struct irqaction cascade_irqaction = {
108     .handler = no_action,
109     .name = "cascade",
110     - .flags = IRQF_NO_THREAD,
111     + .flags = IRQF_NO_THREAD | IRQF_NO_SUSPEND,
112     };
113    
114     void __init mach_init_irq(void)
115     diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c b/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c
116     index aec6e9eef489..55884cb5a0fc 100644
117     --- a/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c
118     +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c
119     @@ -531,11 +531,9 @@ static int vmw_fb_set_par(struct fb_info *info)
120     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121     DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC)
122     };
123     - struct drm_display_mode *old_mode;
124     struct drm_display_mode *mode;
125     int ret;
126    
127     - old_mode = par->set_mode;
128     mode = drm_mode_duplicate(vmw_priv->dev, &new_mode);
129     if (!mode) {
130     DRM_ERROR("Could not create new fb mode.\n");
131     @@ -546,11 +544,7 @@ static int vmw_fb_set_par(struct fb_info *info)
132     mode->vdisplay = var->yres;
133     vmw_guess_mode_timing(mode);
134    
135     - if (old_mode && drm_mode_equal(old_mode, mode)) {
136     - drm_mode_destroy(vmw_priv->dev, mode);
137     - mode = old_mode;
138     - old_mode = NULL;
139     - } else if (!vmw_kms_validate_mode_vram(vmw_priv,
140     + if (!vmw_kms_validate_mode_vram(vmw_priv,
141     mode->hdisplay *
142     DIV_ROUND_UP(var->bits_per_pixel, 8),
143     mode->vdisplay)) {
144     @@ -613,8 +607,8 @@ static int vmw_fb_set_par(struct fb_info *info)
145     schedule_delayed_work(&par->local_work, 0);
146    
147     out_unlock:
148     - if (old_mode)
149     - drm_mode_destroy(vmw_priv->dev, old_mode);
150     + if (par->set_mode)
151     + drm_mode_destroy(vmw_priv->dev, par->set_mode);
152     par->set_mode = mode;
153    
154     drm_modeset_unlock_all(vmw_priv->dev);
155     diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
156     index ca22483d253f..c1233d0288a0 100644
157     --- a/drivers/iommu/amd_iommu.c
158     +++ b/drivers/iommu/amd_iommu.c
159     @@ -2599,7 +2599,12 @@ static int map_sg(struct device *dev, struct scatterlist *sglist,
160    
161     /* Everything is mapped - write the right values into s->dma_address */
162     for_each_sg(sglist, s, nelems, i) {
163     - s->dma_address += address + s->offset;
164     + /*
165     + * Add in the remaining piece of the scatter-gather offset that
166     + * was masked out when we were determining the physical address
167     + * via (sg_phys(s) & PAGE_MASK) earlier.
168     + */
169     + s->dma_address += address + (s->offset & ~PAGE_MASK);
170     s->dma_length = s->length;
171     }
172    
173     diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_ctrl.c
174     index 20397aba6849..d92967e2e385 100644
175     --- a/drivers/media/usb/uvc/uvc_ctrl.c
176     +++ b/drivers/media/usb/uvc/uvc_ctrl.c
177     @@ -1203,7 +1203,7 @@ static void uvc_ctrl_fill_event(struct uvc_video_chain *chain,
178    
179     __uvc_query_v4l2_ctrl(chain, ctrl, mapping, &v4l2_ctrl);
180    
181     - memset(ev->reserved, 0, sizeof(ev->reserved));
182     + memset(ev, 0, sizeof(*ev));
183     ev->type = V4L2_EVENT_CTRL;
184     ev->id = v4l2_ctrl.id;
185     ev->u.ctrl.value = value;
186     diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c b/drivers/media/v4l2-core/v4l2-ctrls.c
187     index bd6884223a0d..c56d649fa7da 100644
188     --- a/drivers/media/v4l2-core/v4l2-ctrls.c
189     +++ b/drivers/media/v4l2-core/v4l2-ctrls.c
190     @@ -1231,7 +1231,7 @@ static u32 user_flags(const struct v4l2_ctrl *ctrl)
191    
192     static void fill_event(struct v4l2_event *ev, struct v4l2_ctrl *ctrl, u32 changes)
193     {
194     - memset(ev->reserved, 0, sizeof(ev->reserved));
195     + memset(ev, 0, sizeof(*ev));
196     ev->type = V4L2_EVENT_CTRL;
197     ev->id = ctrl->id;
198     ev->u.ctrl.changes = changes;
199     diff --git a/drivers/mmc/host/pxamci.c b/drivers/mmc/host/pxamci.c
200     index c763b404510f..3e139692fe8f 100644
201     --- a/drivers/mmc/host/pxamci.c
202     +++ b/drivers/mmc/host/pxamci.c
203     @@ -181,7 +181,7 @@ static void pxamci_dma_irq(void *param);
204     static void pxamci_setup_data(struct pxamci_host *host, struct mmc_data *data)
205     {
206     struct dma_async_tx_descriptor *tx;
207     - enum dma_data_direction direction;
208     + enum dma_transfer_direction direction;
209     struct dma_slave_config config;
210     struct dma_chan *chan;
211     unsigned int nob = data->blocks;
212     diff --git a/drivers/net/wireless/ath/ath10k/wmi.c b/drivers/net/wireless/ath/ath10k/wmi.c
213     index 21aec5c252ee..bbfe7be214e1 100644
214     --- a/drivers/net/wireless/ath/ath10k/wmi.c
215     +++ b/drivers/net/wireless/ath/ath10k/wmi.c
216     @@ -4277,7 +4277,7 @@ static void ath10k_tpc_config_disp_tables(struct ath10k *ar,
217     rate_code[i],
218     type);
219     snprintf(buff, sizeof(buff), "%8d ", tpc[j]);
220     - strncat(tpc_value, buff, strlen(buff));
221     + strlcat(tpc_value, buff, sizeof(tpc_value));
222     }
223     tpc_stats->tpc_table[type].pream_idx[i] = pream_idx;
224     tpc_stats->tpc_table[type].rate_code[i] = rate_code[i];
225     diff --git a/drivers/power/supply/charger-manager.c b/drivers/power/supply/charger-manager.c
226     index e664ca7c0afd..13f23c00538b 100644
227     --- a/drivers/power/supply/charger-manager.c
228     +++ b/drivers/power/supply/charger-manager.c
229     @@ -1212,7 +1212,6 @@ static int charger_extcon_init(struct charger_manager *cm,
230     if (ret < 0) {
231     pr_info("Cannot register extcon_dev for %s(cable: %s)\n",
232     cable->extcon_name, cable->name);
233     - ret = -EINVAL;
234     }
235    
236     return ret;
237     @@ -1634,7 +1633,7 @@ static int charger_manager_probe(struct platform_device *pdev)
238    
239     if (IS_ERR(desc)) {
240     dev_err(&pdev->dev, "No platform data (desc) found\n");
241     - return -ENODEV;
242     + return PTR_ERR(desc);
243     }
244    
245     cm = devm_kzalloc(&pdev->dev,
246     diff --git a/drivers/rtc/rtc-lib.c b/drivers/rtc/rtc-lib.c
247     index e6bfb9c42a10..5b136bdc03d4 100644
248     --- a/drivers/rtc/rtc-lib.c
249     +++ b/drivers/rtc/rtc-lib.c
250     @@ -52,13 +52,11 @@ EXPORT_SYMBOL(rtc_year_days);
251     */
252     void rtc_time64_to_tm(time64_t time, struct rtc_time *tm)
253     {
254     - unsigned int month, year;
255     - unsigned long secs;
256     + unsigned int month, year, secs;
257     int days;
258    
259     /* time must be positive */
260     - days = div_s64(time, 86400);
261     - secs = time - (unsigned int) days * 86400;
262     + days = div_s64_rem(time, 86400, &secs);
263    
264     /* day of the week, 1970-01-01 was a Thursday */
265     tm->tm_wday = (days + 4) % 7;
266     diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
267     index 5cfd56f08ffb..0b858414c558 100644
268     --- a/drivers/scsi/ufs/ufshcd.c
269     +++ b/drivers/scsi/ufs/ufshcd.c
270     @@ -1348,10 +1348,11 @@ static int ufshcd_comp_devman_upiu(struct ufs_hba *hba, struct ufshcd_lrb *lrbp)
271     u32 upiu_flags;
272     int ret = 0;
273    
274     - if (hba->ufs_version == UFSHCI_VERSION_20)
275     - lrbp->command_type = UTP_CMD_TYPE_UFS_STORAGE;
276     - else
277     + if ((hba->ufs_version == UFSHCI_VERSION_10) ||
278     + (hba->ufs_version == UFSHCI_VERSION_11))
279     lrbp->command_type = UTP_CMD_TYPE_DEV_MANAGE;
280     + else
281     + lrbp->command_type = UTP_CMD_TYPE_UFS_STORAGE;
282    
283     ufshcd_prepare_req_desc_hdr(lrbp, &upiu_flags, DMA_NONE);
284     if (hba->dev_cmd.type == DEV_CMD_TYPE_QUERY)
285     @@ -1375,10 +1376,11 @@ static int ufshcd_comp_scsi_upiu(struct ufs_hba *hba, struct ufshcd_lrb *lrbp)
286     u32 upiu_flags;
287     int ret = 0;
288    
289     - if (hba->ufs_version == UFSHCI_VERSION_20)
290     - lrbp->command_type = UTP_CMD_TYPE_UFS_STORAGE;
291     - else
292     + if ((hba->ufs_version == UFSHCI_VERSION_10) ||
293     + (hba->ufs_version == UFSHCI_VERSION_11))
294     lrbp->command_type = UTP_CMD_TYPE_SCSI;
295     + else
296     + lrbp->command_type = UTP_CMD_TYPE_UFS_STORAGE;
297    
298     if (likely(lrbp->cmd)) {
299     ufshcd_prepare_req_desc_hdr(lrbp, &upiu_flags,
300     diff --git a/drivers/tty/serial/sprd_serial.c b/drivers/tty/serial/sprd_serial.c
301     index 699447aa8b43..747560feb63e 100644
302     --- a/drivers/tty/serial/sprd_serial.c
303     +++ b/drivers/tty/serial/sprd_serial.c
304     @@ -36,7 +36,7 @@
305     #define SPRD_FIFO_SIZE 128
306     #define SPRD_DEF_RATE 26000000
307     #define SPRD_BAUD_IO_LIMIT 3000000
308     -#define SPRD_TIMEOUT 256
309     +#define SPRD_TIMEOUT 256000
310    
311     /* the offset of serial registers and BITs for them */
312     /* data registers */
313     @@ -63,6 +63,7 @@
314    
315     /* interrupt clear register */
316     #define SPRD_ICLR 0x0014
317     +#define SPRD_ICLR_TIMEOUT BIT(13)
318    
319     /* line control register */
320     #define SPRD_LCR 0x0018
321     @@ -298,7 +299,8 @@ static irqreturn_t sprd_handle_irq(int irq, void *dev_id)
322     return IRQ_NONE;
323     }
324    
325     - serial_out(port, SPRD_ICLR, ~0);
326     + if (ims & SPRD_IMSR_TIMEOUT)
327     + serial_out(port, SPRD_ICLR, SPRD_ICLR_TIMEOUT);
328    
329     if (ims & (SPRD_IMSR_RX_FIFO_FULL |
330     SPRD_IMSR_BREAK_DETECT | SPRD_IMSR_TIMEOUT))
331     diff --git a/drivers/usb/core/config.c b/drivers/usb/core/config.c
332     index 5e6136d2ed71..c6578b321838 100644
333     --- a/drivers/usb/core/config.c
334     +++ b/drivers/usb/core/config.c
335     @@ -763,18 +763,21 @@ void usb_destroy_configuration(struct usb_device *dev)
336     return;
337    
338     if (dev->rawdescriptors) {
339     - for (i = 0; i < dev->descriptor.bNumConfigurations; i++)
340     + for (i = 0; i < dev->descriptor.bNumConfigurations &&
341     + i < USB_MAXCONFIG; i++)
342     kfree(dev->rawdescriptors[i]);
343    
344     kfree(dev->rawdescriptors);
345     dev->rawdescriptors = NULL;
346     }
347    
348     - for (c = 0; c < dev->descriptor.bNumConfigurations; c++) {
349     + for (c = 0; c < dev->descriptor.bNumConfigurations &&
350     + c < USB_MAXCONFIG; c++) {
351     struct usb_host_config *cf = &dev->config[c];
352    
353     kfree(cf->string);
354     - for (i = 0; i < cf->desc.bNumInterfaces; i++) {
355     + for (i = 0; i < cf->desc.bNumInterfaces &&
356     + i < USB_MAXINTERFACES; i++) {
357     if (cf->intf_cache[i])
358     kref_put(&cf->intf_cache[i]->ref,
359     usb_release_interface_cache);
360     diff --git a/drivers/video/backlight/pwm_bl.c b/drivers/video/backlight/pwm_bl.c
361     index d95ae092f154..baa1510a5298 100644
362     --- a/drivers/video/backlight/pwm_bl.c
363     +++ b/drivers/video/backlight/pwm_bl.c
364     @@ -54,10 +54,11 @@ static void pwm_backlight_power_on(struct pwm_bl_data *pb, int brightness)
365     if (err < 0)
366     dev_err(pb->dev, "failed to enable power supply\n");
367    
368     + pwm_enable(pb->pwm);
369     +
370     if (pb->enable_gpio)
371     gpiod_set_value_cansleep(pb->enable_gpio, 1);
372    
373     - pwm_enable(pb->pwm);
374     pb->enabled = true;
375     }
376    
377     @@ -66,12 +67,12 @@ static void pwm_backlight_power_off(struct pwm_bl_data *pb)
378     if (!pb->enabled)
379     return;
380    
381     - pwm_config(pb->pwm, 0, pb->period);
382     - pwm_disable(pb->pwm);
383     -
384     if (pb->enable_gpio)
385     gpiod_set_value_cansleep(pb->enable_gpio, 0);
386    
387     + pwm_config(pb->pwm, 0, pb->period);
388     + pwm_disable(pb->pwm);
389     +
390     regulator_disable(pb->power_supply);
391     pb->enabled = false;
392     }
393     diff --git a/fs/dcache.c b/fs/dcache.c
394     index 29c0286bd638..05bad55352bb 100644
395     --- a/fs/dcache.c
396     +++ b/fs/dcache.c
397     @@ -1522,7 +1522,7 @@ static void check_and_drop(void *_data)
398     {
399     struct detach_data *data = _data;
400    
401     - if (!data->mountpoint && !data->select.found)
402     + if (!data->mountpoint && list_empty(&data->select.dispose))
403     __d_drop(data->select.start);
404     }
405    
406     @@ -1564,17 +1564,15 @@ void d_invalidate(struct dentry *dentry)
407    
408     d_walk(dentry, &data, detach_and_collect, check_and_drop);
409    
410     - if (data.select.found)
411     + if (!list_empty(&data.select.dispose))
412     shrink_dentry_list(&data.select.dispose);
413     + else if (!data.mountpoint)
414     + return;
415    
416     if (data.mountpoint) {
417     detach_mounts(data.mountpoint);
418     dput(data.mountpoint);
419     }
420     -
421     - if (!data.mountpoint && !data.select.found)
422     - break;
423     -
424     cond_resched();
425     }
426     }
427     diff --git a/fs/ext4/ext4_jbd2.h b/fs/ext4/ext4_jbd2.h
428     index f97611171023..4b7cc1af03a0 100644
429     --- a/fs/ext4/ext4_jbd2.h
430     +++ b/fs/ext4/ext4_jbd2.h
431     @@ -391,7 +391,7 @@ static inline void ext4_update_inode_fsync_trans(handle_t *handle,
432     {
433     struct ext4_inode_info *ei = EXT4_I(inode);
434    
435     - if (ext4_handle_valid(handle)) {
436     + if (ext4_handle_valid(handle) && !is_handle_aborted(handle)) {
437     ei->i_sync_tid = handle->h_transaction->t_tid;
438     if (datasync)
439     ei->i_datasync_tid = handle->h_transaction->t_tid;
440     diff --git a/fs/ext4/file.c b/fs/ext4/file.c
441     index 08fca4add1e2..fe76d0957a1f 100644
442     --- a/fs/ext4/file.c
443     +++ b/fs/ext4/file.c
444     @@ -79,7 +79,7 @@ ext4_unaligned_aio(struct inode *inode, struct iov_iter *from, loff_t pos)
445     struct super_block *sb = inode->i_sb;
446     int blockmask = sb->s_blocksize - 1;
447    
448     - if (pos >= i_size_read(inode))
449     + if (pos >= ALIGN(i_size_read(inode), sb->s_blocksize))
450     return 0;
451    
452     if ((pos | iov_iter_alignment(from)) & blockmask)
453     diff --git a/fs/ext4/indirect.c b/fs/ext4/indirect.c
454     index 58229c1b4a3d..14007e621d2a 100644
455     --- a/fs/ext4/indirect.c
456     +++ b/fs/ext4/indirect.c
457     @@ -1385,10 +1385,14 @@ end_range:
458     partial->p + 1,
459     partial2->p,
460     (chain+n-1) - partial);
461     - BUFFER_TRACE(partial->bh, "call brelse");
462     - brelse(partial->bh);
463     - BUFFER_TRACE(partial2->bh, "call brelse");
464     - brelse(partial2->bh);
465     + while (partial > chain) {
466     + BUFFER_TRACE(partial->bh, "call brelse");
467     + brelse(partial->bh);
468     + }
469     + while (partial2 > chain2) {
470     + BUFFER_TRACE(partial2->bh, "call brelse");
471     + brelse(partial2->bh);
472     + }
473     return 0;
474     }
475    
476     diff --git a/fs/udf/truncate.c b/fs/udf/truncate.c
477     index 42b8c57795cb..c6ce7503a329 100644
478     --- a/fs/udf/truncate.c
479     +++ b/fs/udf/truncate.c
480     @@ -260,6 +260,9 @@ void udf_truncate_extents(struct inode *inode)
481     epos.block = eloc;
482     epos.bh = udf_tread(sb,
483     udf_get_lb_pblock(sb, &eloc, 0));
484     + /* Error reading indirect block? */
485     + if (!epos.bh)
486     + return;
487     if (elen)
488     indirect_ext_len =
489     (elen + sb->s_blocksize - 1) >>
490     diff --git a/include/linux/ceph/libceph.h b/include/linux/ceph/libceph.h
491     index a8a574897d3c..fe757514feb1 100644
492     --- a/include/linux/ceph/libceph.h
493     +++ b/include/linux/ceph/libceph.h
494     @@ -276,6 +276,8 @@ extern void ceph_destroy_client(struct ceph_client *client);
495     extern int __ceph_open_session(struct ceph_client *client,
496     unsigned long started);
497     extern int ceph_open_session(struct ceph_client *client);
498     +int ceph_wait_for_latest_osdmap(struct ceph_client *client,
499     + unsigned long timeout);
500    
501     /* pagevec.c */
502     extern void ceph_release_page_vector(struct page **pages, int num_pages);
503     diff --git a/include/net/inet_connection_sock.h b/include/net/inet_connection_sock.h
504     index 197a30d221e9..146054ceea8e 100644
505     --- a/include/net/inet_connection_sock.h
506     +++ b/include/net/inet_connection_sock.h
507     @@ -289,11 +289,6 @@ static inline int inet_csk_reqsk_queue_len(const struct sock *sk)
508     return reqsk_queue_len(&inet_csk(sk)->icsk_accept_queue);
509     }
510    
511     -static inline int inet_csk_reqsk_queue_young(const struct sock *sk)
512     -{
513     - return reqsk_queue_len_young(&inet_csk(sk)->icsk_accept_queue);
514     -}
515     -
516     static inline int inet_csk_reqsk_queue_is_full(const struct sock *sk)
517     {
518     return inet_csk_reqsk_queue_len(sk) >= sk->sk_max_ack_backlog;
519     diff --git a/kernel/futex.c b/kernel/futex.c
520     index 30fe0432c46d..2e766ffff2cb 100644
521     --- a/kernel/futex.c
522     +++ b/kernel/futex.c
523     @@ -3110,6 +3110,10 @@ int handle_futex_death(u32 __user *uaddr, struct task_struct *curr, int pi)
524     {
525     u32 uval, uninitialized_var(nval), mval;
526    
527     + /* Futex address must be 32bit aligned */
528     + if ((((unsigned long)uaddr) % sizeof(*uaddr)) != 0)
529     + return -1;
530     +
531     retry:
532     if (get_user(uval, uaddr))
533     return -1;
534     diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
535     index 26fc428476b9..d5b779d7e79f 100644
536     --- a/kernel/locking/lockdep.c
537     +++ b/kernel/locking/lockdep.c
538     @@ -3446,6 +3446,9 @@ __lock_set_class(struct lockdep_map *lock, const char *name,
539     unsigned int depth;
540     int i;
541    
542     + if (unlikely(!debug_locks))
543     + return 0;
544     +
545     depth = curr->lockdep_depth;
546     /*
547     * This function is about (re)setting the class of a held lock,
548     diff --git a/lib/int_sqrt.c b/lib/int_sqrt.c
549     index 1ef4cc344977..1afb545a37c5 100644
550     --- a/lib/int_sqrt.c
551     +++ b/lib/int_sqrt.c
552     @@ -22,6 +22,9 @@ unsigned long int_sqrt(unsigned long x)
553     return x;
554    
555     m = 1UL << (BITS_PER_LONG - 2);
556     + while (m > x)
557     + m >>= 2;
558     +
559     while (m != 0) {
560     b = y + m;
561     y >>= 1;
562     diff --git a/net/bluetooth/hci_sock.c b/net/bluetooth/hci_sock.c
563     index c88a6007e643..ca1836941f3c 100644
564     --- a/net/bluetooth/hci_sock.c
565     +++ b/net/bluetooth/hci_sock.c
566     @@ -826,8 +826,6 @@ static int hci_sock_release(struct socket *sock)
567     if (!sk)
568     return 0;
569    
570     - hdev = hci_pi(sk)->hdev;
571     -
572     switch (hci_pi(sk)->channel) {
573     case HCI_CHANNEL_MONITOR:
574     atomic_dec(&monitor_promisc);
575     @@ -849,6 +847,7 @@ static int hci_sock_release(struct socket *sock)
576    
577     bt_sock_unlink(&hci_sk_list, sk);
578    
579     + hdev = hci_pi(sk)->hdev;
580     if (hdev) {
581     if (hci_pi(sk)->channel == HCI_CHANNEL_USER) {
582     /* When releasing an user channel exclusive access,
583     diff --git a/net/ceph/ceph_common.c b/net/ceph/ceph_common.c
584     index 464e88599b9d..bf0294cf4d22 100644
585     --- a/net/ceph/ceph_common.c
586     +++ b/net/ceph/ceph_common.c
587     @@ -699,7 +699,6 @@ int __ceph_open_session(struct ceph_client *client, unsigned long started)
588     }
589     EXPORT_SYMBOL(__ceph_open_session);
590    
591     -
592     int ceph_open_session(struct ceph_client *client)
593     {
594     int ret;
595     @@ -715,6 +714,23 @@ int ceph_open_session(struct ceph_client *client)
596     }
597     EXPORT_SYMBOL(ceph_open_session);
598    
599     +int ceph_wait_for_latest_osdmap(struct ceph_client *client,
600     + unsigned long timeout)
601     +{
602     + u64 newest_epoch;
603     + int ret;
604     +
605     + ret = ceph_monc_get_version(&client->monc, "osdmap", &newest_epoch);
606     + if (ret)
607     + return ret;
608     +
609     + if (client->osdc.osdmap->epoch >= newest_epoch)
610     + return 0;
611     +
612     + ceph_osdc_maybe_request_map(&client->osdc);
613     + return ceph_monc_wait_osdmap(&client->monc, newest_epoch, timeout);
614     +}
615     +EXPORT_SYMBOL(ceph_wait_for_latest_osdmap);
616    
617     static int __init init_ceph_lib(void)
618     {
619     diff --git a/net/ceph/mon_client.c b/net/ceph/mon_client.c
620     index 500481003de4..288c1fcbcdf6 100644
621     --- a/net/ceph/mon_client.c
622     +++ b/net/ceph/mon_client.c
623     @@ -914,6 +914,15 @@ int ceph_monc_blacklist_add(struct ceph_mon_client *monc,
624     mutex_unlock(&monc->mutex);
625    
626     ret = wait_generic_request(req);
627     + if (!ret)
628     + /*
629     + * Make sure we have the osdmap that includes the blacklist
630     + * entry. This is needed to ensure that the OSDs pick up the
631     + * new blacklist before processing any future requests from
632     + * this client.
633     + */
634     + ret = ceph_wait_for_latest_osdmap(monc->client, 0);
635     +
636     out:
637     put_generic_request(req);
638     return ret;
639     diff --git a/net/dccp/ipv4.c b/net/dccp/ipv4.c
640     index 28ad6f187e19..1d6d3aaa8c3d 100644
641     --- a/net/dccp/ipv4.c
642     +++ b/net/dccp/ipv4.c
643     @@ -596,13 +596,7 @@ int dccp_v4_conn_request(struct sock *sk, struct sk_buff *skb)
644     if (inet_csk_reqsk_queue_is_full(sk))
645     goto drop;
646    
647     - /*
648     - * Accept backlog is full. If we have already queued enough
649     - * of warm entries in syn queue, drop request. It is better than
650     - * clogging syn queue with openreqs with exponentially increasing
651     - * timeout.
652     - */
653     - if (sk_acceptq_is_full(sk) && inet_csk_reqsk_queue_young(sk) > 1)
654     + if (sk_acceptq_is_full(sk))
655     goto drop;
656    
657     req = inet_reqsk_alloc(&dccp_request_sock_ops, sk, true);
658     diff --git a/net/dccp/ipv6.c b/net/dccp/ipv6.c
659     index 6cbcf399d22b..93c706172f40 100644
660     --- a/net/dccp/ipv6.c
661     +++ b/net/dccp/ipv6.c
662     @@ -328,7 +328,7 @@ static int dccp_v6_conn_request(struct sock *sk, struct sk_buff *skb)
663     if (inet_csk_reqsk_queue_is_full(sk))
664     goto drop;
665    
666     - if (sk_acceptq_is_full(sk) && inet_csk_reqsk_queue_young(sk) > 1)
667     + if (sk_acceptq_is_full(sk))
668     goto drop;
669    
670     req = inet_reqsk_alloc(&dccp6_request_sock_ops, sk, true);
671     diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
672     index 48fe63c4fe24..cd4f13dda49e 100644
673     --- a/net/ipv4/tcp_input.c
674     +++ b/net/ipv4/tcp_input.c
675     @@ -6374,13 +6374,7 @@ int tcp_conn_request(struct request_sock_ops *rsk_ops,
676     goto drop;
677     }
678    
679     -
680     - /* Accept backlog is full. If we have already queued enough
681     - * of warm entries in syn queue, drop request. It is better than
682     - * clogging syn queue with openreqs with exponentially increasing
683     - * timeout.
684     - */
685     - if (sk_acceptq_is_full(sk) && inet_csk_reqsk_queue_young(sk) > 1) {
686     + if (sk_acceptq_is_full(sk)) {
687     NET_INC_STATS(sock_net(sk), LINUX_MIB_LISTENOVERFLOWS);
688     goto drop;
689     }
690     diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
691     index c6b046ddefdd..1b5e217d1bb2 100644
692     --- a/sound/pci/hda/hda_codec.c
693     +++ b/sound/pci/hda/hda_codec.c
694     @@ -3004,6 +3004,7 @@ static void hda_call_codec_resume(struct hda_codec *codec)
695     hda_jackpoll_work(&codec->jackpoll_work.work);
696     else
697     snd_hda_jack_report_sync(codec);
698     + codec->core.dev.power.power_state = PMSG_ON;
699     atomic_dec(&codec->core.in_pm);
700     }
701    
702     @@ -3036,10 +3037,62 @@ static int hda_codec_runtime_resume(struct device *dev)
703     }
704     #endif /* CONFIG_PM */
705    
706     +#ifdef CONFIG_PM_SLEEP
707     +static int hda_codec_force_resume(struct device *dev)
708     +{
709     + int ret;
710     +
711     + /* The get/put pair below enforces the runtime resume even if the
712     + * device hasn't been used at suspend time. This trick is needed to
713     + * update the jack state change during the sleep.
714     + */
715     + pm_runtime_get_noresume(dev);
716     + ret = pm_runtime_force_resume(dev);
717     + pm_runtime_put(dev);
718     + return ret;
719     +}
720     +
721     +static int hda_codec_pm_suspend(struct device *dev)
722     +{
723     + dev->power.power_state = PMSG_SUSPEND;
724     + return pm_runtime_force_suspend(dev);
725     +}
726     +
727     +static int hda_codec_pm_resume(struct device *dev)
728     +{
729     + dev->power.power_state = PMSG_RESUME;
730     + return hda_codec_force_resume(dev);
731     +}
732     +
733     +static int hda_codec_pm_freeze(struct device *dev)
734     +{
735     + dev->power.power_state = PMSG_FREEZE;
736     + return pm_runtime_force_suspend(dev);
737     +}
738     +
739     +static int hda_codec_pm_thaw(struct device *dev)
740     +{
741     + dev->power.power_state = PMSG_THAW;
742     + return hda_codec_force_resume(dev);
743     +}
744     +
745     +static int hda_codec_pm_restore(struct device *dev)
746     +{
747     + dev->power.power_state = PMSG_RESTORE;
748     + return hda_codec_force_resume(dev);
749     +}
750     +#endif /* CONFIG_PM_SLEEP */
751     +
752     /* referred in hda_bind.c */
753     const struct dev_pm_ops hda_codec_driver_pm = {
754     - SET_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend,
755     - pm_runtime_force_resume)
756     +#ifdef CONFIG_PM_SLEEP
757     + .suspend = hda_codec_pm_suspend,
758     + .resume = hda_codec_pm_resume,
759     + .freeze = hda_codec_pm_freeze,
760     + .thaw = hda_codec_pm_thaw,
761     + .poweroff = hda_codec_pm_suspend,
762     + .restore = hda_codec_pm_restore,
763     +#endif /* CONFIG_PM_SLEEP */
764     SET_RUNTIME_PM_OPS(hda_codec_runtime_suspend, hda_codec_runtime_resume,
765     NULL)
766     };
767     diff --git a/tools/objtool/check.c b/tools/objtool/check.c
768     index e128d1c71c30..3ff025b64527 100644
769     --- a/tools/objtool/check.c
770     +++ b/tools/objtool/check.c
771     @@ -2132,9 +2132,10 @@ static void cleanup(struct objtool_file *file)
772     elf_close(file->elf);
773     }
774    
775     +static struct objtool_file file;
776     +
777     int check(const char *_objname, bool orc)
778     {
779     - struct objtool_file file;
780     int ret, warnings = 0;
781    
782     objname = _objname;