Linux 4.9.166
Greg KH
maintainerI'm announcing the release of the 4.9.166 kernel.
All users of the 4.9 kernel series must upgrade.
The updated 4.9.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.9.y
and can be browsed at the normal kernel.org git web browser:
http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2 - arch/arm64/kernel/traps.c | 8 +++- arch/mips/include/asm/jump_label.h | 8 ++-- arch/mips/kernel/vmlinux.lds.S | 12 ++++-- arch/mips/loongson64/lemote-2f/irq.c | 2 - drivers/gpu/drm/vmwgfx/vmwgfx_fb.c | 12 +----- drivers/iommu/amd_iommu.c | 7 +++- drivers/media/usb/uvc/uvc_ctrl.c | 2 - drivers/media/v4l2-core/v4l2-ctrls.c | 2 - drivers/mmc/host/pxamci.c | 2 - drivers/net/wireless/ath/ath10k/wmi.c | 2 - drivers/power/supply/charger-manager.c | 3 - drivers/rtc/rtc-lib.c | 6 +-- drivers/scsi/ufs/ufshcd.c | 14 ++++---- drivers/tty/serial/sprd_serial.c | 6 ++- drivers/usb/core/config.c | 9 +++-- drivers/video/backlight/pwm_bl.c | 9 ++--- fs/dcache.c | 10 ++--- fs/ext4/ext4_jbd2.h | 2 - fs/ext4/file.c | 2 - fs/ext4/indirect.c | 12 ++++-- fs/udf/truncate.c | 3 + include/linux/ceph/libceph.h | 2 + include/net/inet_connection_sock.h | 5 -- kernel/futex.c | 4 ++ kernel/locking/lockdep.c | 3 + lib/int_sqrt.c | 3 + net/bluetooth/hci_sock.c | 3 - net/ceph/ceph_common.c | 18 +++++++++- net/ceph/mon_client.c | 9 +++++ net/dccp/ipv4.c | 8 ---- net/dccp/ipv6.c | 2 - net/ipv4/tcp_input.c | 8 ---- sound/pci/hda/hda_codec.c | 57 +++++++++++++++++++++++++++++++-- tools/objtool/check.c | 3 + 35 files changed, 174 insertions(+), 86 deletions(-)
Al Viro (1):
Hang/soft lockup in d_invalidate with simultaneous calls
Andrey Konovalov (1):
USB: core: only clean up what we allocated
Archer Yan (1):
MIPS: Fix kernel crash for R6 in jump label branch function
Arnd Bergmann (2):
mmc: pxamci: fix enum type confusion
ath10k: avoid possible string overflow
Baolin Wang (2):
rtc: Fix overflow when converting time64_t to rtc_time
power: supply: charger-manager: Fix incorrect return value
Chen Jie (1):
futex: Ensure that futex address is aligned in handle_futex_death()
Enric Balletbo i Serra (1):
pwm-backlight: Enable/disable the PWM before/after LCD enable toggle.
Eric Dumazet (1):
tcp/dccp: drop SYN packets if accept queue is full
Greg Kroah-Hartman (1):
Linux 4.9.166
Hans Verkuil (1):
media: v4l2-ctrls.c/uvc: zero v4l2_event
Hui Wang (1):
ALSA: hda - Enforces runtime_resume after S3 and S4 for each codec
Ilya Dryomov (1):
libceph: wait for latest osdmap in ceph_monc_blacklist_add()
Jan Kara (1):
udf: Fix crash on IO error during truncate
Jiufei Xue (1):
ext4: fix NULL pointer dereference while journal is aborted
Josh Poimboeuf (1):
objtool: Move objtool_file struct off the stack
Lanqing Liu (1):
serial: sprd: clear timeout interrupt only rather than all interrupts
Lukas Czerner (1):
ext4: fix data corruption caused by unaligned direct AIO
Myungho Jung (1):
Bluetooth: Fix decrementing reference count twice in releasing socket
Peter Zijlstra (1):
lib/int_sqrt: optimize small argument
Qiao Zhou (1):
arm64: traps: disable irq in die()
Stanislaw Gruszka (1):
iommu/amd: fix sg->dma_address for sg->offset bigger than PAGE_SIZE
Takashi Iwai (1):
ALSA: hda - Record the current power state before suspend/resume calls
Thomas Zimmermann (1):
drm/vmwgfx: Don't double-free the mode stored in par->set_mode
Waiman Long (1):
locking/lockdep: Add debug_locks check in __lock_downgrade()
Wei Qiao (1):
serial: sprd: adjust TIMEOUT to a big value
Yasha Cherikovsky (1):
MIPS: Ensure ELF appended dtb is relocated
Yifeng Li (1):
mips: loongson64: lemote-2f: Add IRQF_NO_SUSPEND to "cascade" irqaction.
kehuanlin (1):
scsi: ufs: fix wrong command type of UTRD for UFSHCI v2.1
zhangyi (F) (1):
ext4: brelse all indirect buffer in ext4_ind_remove_space()
Greg KH
maintainerMakefile +1 -1
@@ -1,6 +1,6 @@ VERSION = 4 PATCHLEVEL = 9 -SUBLEVEL = 165 +SUBLEVEL = 166 EXTRAVERSION = NAME = Roaring Lionus
arch/arm64/kernel/traps.c +6 -2
@@ -266,10 +266,12 @@ void die(const char *str, struct pt_regs *regs, int err) {struct thread_info *thread =current_thread_info ();int ret; +unsigned long flags; + +raw_spin_lock_irqsave (&die_lock, flags);oops_enter (); -raw_spin_lock_irq (&die_lock);console_verbose ();bust_spinlocks (1 ); ret =__die (str, err, thread, regs);
@@ -279,13 +281,15 @@ void die(const char *str, struct pt_regs *regs, int err)bust_spinlocks (0 );add_taint (TAINT_DIE ,LOCKDEP_NOW_UNRELIABLE ); -raw_spin_unlock_irq (&die_lock);oops_exit ();if (in_interrupt ())panic ("Fatal exception in interrupt" );if (panic_on_oops)panic ("Fatal exception" ); + +raw_spin_unlock_irqrestore (&die_lock, flags); +if (ret !=NOTIFY_STOP )do_exit (SIGSEGV ); }
arch/mips/include/asm/jump_label.h +4 -4
@@ -21,15 +21,15 @@#endif #ifdef CONFIG_CPU_MICROMIPS -#define NOP_INSN "nop32" +#define B_INSN "b32"#else -#define NOP_INSN "nop" +#define B_INSN "b"#endif static __always_inline bool arch_static_branch(struct static_key *key, bool branch) { -asm_volatile_goto ("1:\t" NOP_INSN "\n\t" -"nop\n\t" +asm_volatile_goto ("1:\t" B_INSN " 2f\n\t" +"2:\tnop\n\t" ".pushsection __jump_table, \"aw\"\n\t" WORD_INSN " 1b, %l[l_yes], %0\n\t" ".popsection\n\t"
arch/mips/kernel/vmlinux.lds.S +7 -5
@@ -138,6 +138,13 @@ SECTIONS PERCPU_SECTION(1 << CONFIG_MIPS_L1_CACHE_SHIFT) #endif +#ifdef CONFIG_MIPS_ELF_APPENDED_DTB + .appended_dtb : AT(ADDR(.appended_dtb) - LOAD_OFFSET) { + *(.appended_dtb) + KEEP(*(.appended_dtb)) + } +#endif + #ifdef CONFIG_RELOCATABLE . = ALIGN(4);
@@ -162,11 +169,6 @@ SECTIONS __appended_dtb = .; /* leave space for appended DTB */ . += 0x100000; -#elif defined(CONFIG_MIPS_ELF_APPENDED_DTB) - .appended_dtb : AT(ADDR(.appended_dtb) - LOAD_OFFSET) { - *(.appended_dtb) - KEEP(*(.appended_dtb)) - } #endif /* * Align to 64K in attempt to eliminate holes before the
arch/mips/loongson64/lemote-2f/irq.c +1 -1
@@ -102,7 +102,7 @@ static struct irqaction ip6_irqaction = {static struct irqaction cascade_irqaction = { .handler = no_action, .name ="cascade" , - .flags =IRQF_NO_THREAD , + .flags =IRQF_NO_THREAD |IRQF_NO_SUSPEND , };void __init mach_init_irq (void )
drivers/gpu/drm/vmwgfx/vmwgfx_fb.c +3 -9
@@ -531,11 +531,9 @@ static int vmw_fb_set_par(struct fb_info *info)0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }; -struct drm_display_mode *old_mode;struct drm_display_mode *mode;int ret; - old_mode = par->set_mode; mode =drm_mode_duplicate (vmw_priv->dev, &new_mode);if (!mode) {DRM_ERROR ("Could not create new fb mode.\n" );
@@ -546,11 +544,7 @@ static int vmw_fb_set_par(struct fb_info *info) mode->vdisplay = var->yres;vmw_guess_mode_timing (mode); -if (old_mode &&drm_mode_equal (old_mode, mode)) { -drm_mode_destroy (vmw_priv->dev, mode); - mode = old_mode; - old_mode =NULL ; - }else if (!vmw_kms_validate_mode_vram (vmw_priv, +if (!vmw_kms_validate_mode_vram (vmw_priv, mode->hdisplay *DIV_ROUND_UP (var->bits_per_pixel,8 ), mode->vdisplay)) {
@@ -613,8 +607,8 @@ static int vmw_fb_set_par(struct fb_info *info)schedule_delayed_work (&par->local_work,0 ); out_unlock: -if (old_mode) -drm_mode_destroy (vmw_priv->dev, old_mode); +if (par->set_mode) +drm_mode_destroy (vmw_priv->dev, par->set_mode); par->set_mode = mode;drm_modeset_unlock_all (vmw_priv->dev);
drivers/iommu/amd_iommu.c +6 -1
@@ -2599,7 +2599,12 @@ static int map_sg(struct device *dev, struct scatterlist *sglist,/* Everything is mapped - write the right values into s->dma_address */ for_each_sg (sglist, s, nelems, i) { - s->dma_address += address + s->offset; +/* +* Add in the remaining piece of the scatter-gather offset that +* was masked out when we were determining the physical address +* via (sg_phys(s) & PAGE_MASK) earlier. +*/ + s->dma_address += address + (s->offset & ~PAGE_MASK ); s->dma_length = s->length; }
drivers/media/usb/uvc/uvc_ctrl.c +1 -1
@@ -1203,7 +1203,7 @@ static void uvc_ctrl_fill_event(struct uvc_video_chain *chain,__uvc_query_v4l2_ctrl (chain, ctrl, mapping, &v4l2_ctrl); -memset (ev->reserved,0 ,sizeof (ev->reserved)); +memset (ev,0 ,sizeof (*ev)); ev->type =V4L2_EVENT_CTRL ; ev->id = v4l2_ctrl.id; ev->u.ctrl.value = value;
drivers/media/v4l2-core/v4l2-ctrls.c +1 -1
@@ -1231,7 +1231,7 @@ static u32 user_flags(const struct v4l2_ctrl *ctrl)static void fill_event (struct v4l2_event *ev,struct v4l2_ctrl *ctrl,u32 changes) { -memset (ev->reserved,0 ,sizeof (ev->reserved)); +memset (ev,0 ,sizeof (*ev)); ev->type =V4L2_EVENT_CTRL ; ev->id = ctrl->id; ev->u.ctrl.changes = changes;
drivers/mmc/host/pxamci.c +1 -1
@@ -181,7 +181,7 @@ static void pxamci_dma_irq(void *param);static void pxamci_setup_data (struct pxamci_host *host,struct mmc_data *data) {struct dma_async_tx_descriptor *tx; -enum dma_data_direction direction; +enum dma_transfer_direction direction;struct dma_slave_config config;struct dma_chan *chan;unsigned int nob = data->blocks;
drivers/net/wireless/ath/ath10k/wmi.c +1 -1
@@ -4277,7 +4277,7 @@ static void ath10k_tpc_config_disp_tables(struct ath10k *ar, rate_code[i], type);snprintf (buff,sizeof (buff),"%8d " , tpc[j]); -strncat (tpc_value, buff,strlen (buff)); +strlcat (tpc_value, buff,sizeof (tpc_value)); } tpc_stats->tpc_table[type].pream_idx[i] = pream_idx; tpc_stats->tpc_table[type].rate_code[i] = rate_code[i];
drivers/power/supply/charger-manager.c +1 -2
@@ -1212,7 +1212,6 @@ static int charger_extcon_init(struct charger_manager *cm,if (ret <0 ) {pr_info ("Cannot register extcon_dev for %s(cable: %s)\n" , cable->extcon_name, cable->name); - ret = -EINVAL ; }return ret;
@@ -1634,7 +1633,7 @@ static int charger_manager_probe(struct platform_device *pdev)if (IS_ERR (desc)) {dev_err (&pdev->dev,"No platform data (desc) found\n" ); -return -ENODEV ; +return PTR_ERR (desc); } cm = devm_kzalloc(&pdev->dev,
drivers/rtc/rtc-lib.c +2 -4
@@ -52,13 +52,11 @@ EXPORT_SYMBOL(rtc_year_days);*/ void rtc_time64_to_tm (time64_t time,struct rtc_time *tm) { -unsigned int month, year; -unsigned long secs; +unsigned int month, year, secs;int days;/* time must be positive */ - days =div_s64 (time,86400 ); - secs = time - (unsigned int ) days *86400 ; + days =div_s64_rem (time,86400 , &secs);/* day of the week, 1970-01-01 was a Thursday */ tm->tm_wday = (days +4 ) %7 ;
drivers/scsi/ufs/ufshcd.c +8 -6
@@ -1348,10 +1348,11 @@ static int ufshcd_comp_devman_upiu(struct ufs_hba *hba, struct ufshcd_lrb *lrbp)u32 upiu_flags;int ret =0 ; -if (hba->ufs_version ==UFSHCI_VERSION_20 ) - lrbp->command_type =UTP_CMD_TYPE_UFS_STORAGE ; -else +if ((hba->ufs_version ==UFSHCI_VERSION_10 ) || + (hba->ufs_version ==UFSHCI_VERSION_11 )) lrbp->command_type =UTP_CMD_TYPE_DEV_MANAGE ; +else + lrbp->command_type =UTP_CMD_TYPE_UFS_STORAGE ;ufshcd_prepare_req_desc_hdr (lrbp, &upiu_flags,DMA_NONE );if (hba->dev_cmd.type ==DEV_CMD_TYPE_QUERY )
@@ -1375,10 +1376,11 @@ static int ufshcd_comp_scsi_upiu(struct ufs_hba *hba, struct ufshcd_lrb *lrbp)u32 upiu_flags;int ret =0 ; -if (hba->ufs_version ==UFSHCI_VERSION_20 ) - lrbp->command_type =UTP_CMD_TYPE_UFS_STORAGE ; -else +if ((hba->ufs_version ==UFSHCI_VERSION_10 ) || + (hba->ufs_version ==UFSHCI_VERSION_11 )) lrbp->command_type =UTP_CMD_TYPE_SCSI ; +else + lrbp->command_type =UTP_CMD_TYPE_UFS_STORAGE ;if (likely (lrbp->cmd)) { ufshcd_prepare_req_desc_hdr(lrbp, &upiu_flags,
drivers/tty/serial/sprd_serial.c +4 -2
@@ -36,7 +36,7 @@#define SPRD_FIFO_SIZE 128#define SPRD_DEF_RATE 26000000#define SPRD_BAUD_IO_LIMIT 3000000 -#define SPRD_TIMEOUT 256 +#define SPRD_TIMEOUT 256000/* the offset of serial registers and BITs for them */ /* data registers */
@@ -63,6 +63,7 @@/* interrupt clear register */ #define SPRD_ICLR 0x0014 +#define SPRD_ICLR_TIMEOUT BIT(13)/* line control register */ #define SPRD_LCR 0x0018
@@ -298,7 +299,8 @@ static irqreturn_t sprd_handle_irq(int irq, void *dev_id)return IRQ_NONE ; } -serial_out (port,SPRD_ICLR , ~0 ); +if (ims &SPRD_IMSR_TIMEOUT ) +serial_out (port,SPRD_ICLR ,SPRD_ICLR_TIMEOUT );if (ims & (SPRD_IMSR_RX_FIFO_FULL |SPRD_IMSR_BREAK_DETECT |SPRD_IMSR_TIMEOUT ))
drivers/usb/core/config.c +6 -3
@@ -763,18 +763,21 @@ void usb_destroy_configuration(struct usb_device *dev)return ;if (dev->rawdescriptors) { -for (i =0 ; i < dev->descriptor.bNumConfigurations; i++) +for (i =0 ; i < dev->descriptor.bNumConfigurations && + i <USB_MAXCONFIG ; i++)kfree (dev->rawdescriptors[i]);kfree (dev->rawdescriptors); dev->rawdescriptors =NULL ; } -for (c =0 ; c < dev->descriptor.bNumConfigurations; c++) { +for (c =0 ; c < dev->descriptor.bNumConfigurations && + c <USB_MAXCONFIG ; c++) {struct usb_host_config *cf = &dev->config[c];kfree (cf->string); -for (i =0 ; i < cf->desc.bNumInterfaces; i++) { +for (i =0 ; i < cf->desc.bNumInterfaces && + i <USB_MAXINTERFACES ; i++) {if (cf->intf_cache[i])kref_put (&cf->intf_cache[i]->ref, usb_release_interface_cache);
drivers/video/backlight/pwm_bl.c +5 -4
@@ -54,10 +54,11 @@ static void pwm_backlight_power_on(struct pwm_bl_data *pb, int brightness)if (err <0 )dev_err (pb->dev,"failed to enable power supply\n" ); +pwm_enable (pb->pwm); +if (pb->enable_gpio)gpiod_set_value_cansleep (pb->enable_gpio,1 ); -pwm_enable (pb->pwm); pb->enabled = true; }
@@ -66,12 +67,12 @@ static void pwm_backlight_power_off(struct pwm_bl_data *pb)if (!pb->enabled)return ; -pwm_config (pb->pwm,0 , pb->period); -pwm_disable (pb->pwm); -if (pb->enable_gpio)gpiod_set_value_cansleep (pb->enable_gpio,0 ); +pwm_config (pb->pwm,0 , pb->period); +pwm_disable (pb->pwm); +regulator_disable (pb->power_supply); pb->enabled = false; }
fs/dcache.c +4 -6
@@ -1522,7 +1522,7 @@ static void check_and_drop(void *_data) {struct detach_data *data = _data; -if (!data->mountpoint && !data->select.found) +if (!data->mountpoint &&list_empty (&data->select.dispose))__d_drop (data->select.start); }
@@ -1564,17 +1564,15 @@ void d_invalidate(struct dentry *dentry)d_walk (dentry, &data, detach_and_collect, check_and_drop); -if (data.select.found) +if (!list_empty (&data.select.dispose))shrink_dentry_list (&data.select.dispose); +else if (!data.mountpoint) +return ;if (data.mountpoint) {detach_mounts (data.mountpoint);dput (data.mountpoint); } - -if (!data.mountpoint && !data.select.found) -break ; -cond_resched (); } }
fs/ext4/ext4_jbd2.h +1 -1
@@ -391,7 +391,7 @@ static inline void ext4_update_inode_fsync_trans(handle_t *handle, {struct ext4_inode_info *ei =EXT4_I (inode); -if (ext4_handle_valid (handle)) { +if (ext4_handle_valid (handle) && !is_handle_aborted (handle)) { ei->i_sync_tid = handle->h_transaction->t_tid;if (datasync) ei->i_datasync_tid = handle->h_transaction->t_tid;
fs/ext4/file.c +1 -1
@@ -79,7 +79,7 @@ ext4_unaligned_aio(struct inode *inode, struct iov_iter *from, loff_t pos)struct super_block *sb = inode->i_sb;int blockmask = sb->s_blocksize -1 ; -if (pos >=i_size_read (inode)) +if (pos >=ALIGN (i_size_read (inode), sb->s_blocksize))return 0 ;if ((pos |iov_iter_alignment (from)) & blockmask)
fs/ext4/indirect.c +8 -4
@@ -1385,10 +1385,14 @@ int ext4_ind_remove_space(handle_t *handle, struct inode *inode, partial->p +1 , partial2->p, (chain+n-1) - partial); -BUFFER_TRACE (partial->bh,"call brelse" ); -brelse (partial->bh); -BUFFER_TRACE (partial2->bh,"call brelse" ); -brelse (partial2->bh); +while (partial > chain) { +BUFFER_TRACE (partial->bh,"call brelse" ); +brelse (partial->bh); + } +while (partial2 > chain2) { +BUFFER_TRACE (partial2->bh,"call brelse" ); +brelse (partial2->bh); + }return 0 ; }
fs/udf/truncate.c +3 -0
@@ -260,6 +260,9 @@ void udf_truncate_extents(struct inode *inode) epos.block = eloc; epos.bh =udf_tread (sb,udf_get_lb_pblock (sb, &eloc,0 )); +/* Error reading indirect block? */ +if (!epos.bh) +return ;if (elen) indirect_ext_len = (elen + sb->s_blocksize - 1) >>
include/linux/ceph/libceph.h +2 -0
@@ -276,6 +276,8 @@ extern void ceph_destroy_client(struct ceph_client *client);extern int __ceph_open_session (struct ceph_client *client,unsigned long started);extern int ceph_open_session (struct ceph_client *client); +int ceph_wait_for_latest_osdmap (struct ceph_client *client, +unsigned long timeout);/* pagevec.c */ extern void ceph_release_page_vector (struct page **pages,int num_pages);
include/net/inet_connection_sock.h +0 -5
@@ -289,11 +289,6 @@ static inline int inet_csk_reqsk_queue_len(const struct sock *sk)return reqsk_queue_len (&inet_csk (sk)->icsk_accept_queue); } -static inline int inet_csk_reqsk_queue_young (const struct sock *sk) -{ -return reqsk_queue_len_young (&inet_csk (sk)->icsk_accept_queue); -} -static inline int inet_csk_reqsk_queue_is_full (const struct sock *sk) {return inet_csk_reqsk_queue_len (sk) >= sk->sk_max_ack_backlog;
kernel/futex.c +4 -0
@@ -3110,6 +3110,10 @@ int handle_futex_death(u32 __user *uaddr, struct task_struct *curr, int pi) {u32 uval,uninitialized_var (nval ), mval; +/* Futex address must be 32bit aligned */ +if ((((unsigned long )uaddr) %sizeof (*uaddr)) !=0 ) +return -1 ; + retry:if (get_user (uval, uaddr))return -1 ;
kernel/locking/lockdep.c +3 -0
@@ -3446,6 +3446,9 @@ __lock_set_class(struct lockdep_map *lock, const char *name,unsigned int depth;int i; +if (unlikely (!debug_locks)) +return 0 ; + depth = curr->lockdep_depth;/* * This function is about (re)setting the class of a held lock,
lib/int_sqrt.c +3 -0
@@ -22,6 +22,9 @@ unsigned long int_sqrt(unsigned long x)return x; m =1UL << (BITS_PER_LONG -2 ); +while (m > x) + m >>=2 ; +while (m !=0 ) { b = y + m; y >>=1 ;
net/bluetooth/hci_sock.c +1 -2
@@ -826,8 +826,6 @@ static int hci_sock_release(struct socket *sock)if (!sk)return 0 ; - hdev =hci_pi (sk)->hdev; -switch (hci_pi (sk)->channel) {case HCI_CHANNEL_MONITOR :atomic_dec (&monitor_promisc);
@@ -849,6 +847,7 @@ static int hci_sock_release(struct socket *sock)bt_sock_unlink (&hci_sk_list, sk); + hdev =hci_pi (sk)->hdev;if (hdev) {if (hci_pi (sk)->channel ==HCI_CHANNEL_USER ) {/* When releasing an user channel exclusive access,
net/ceph/ceph_common.c +17 -1
@@ -699,7 +699,6 @@ int __ceph_open_session(struct ceph_client *client, unsigned long started) }EXPORT_SYMBOL (__ceph_open_session); -int ceph_open_session (struct ceph_client *client) {int ret;
@@ -715,6 +714,23 @@ int ceph_open_session(struct ceph_client *client) }EXPORT_SYMBOL (ceph_open_session); +int ceph_wait_for_latest_osdmap (struct ceph_client *client, +unsigned long timeout) +{ +u64 newest_epoch; +int ret; + + ret =ceph_monc_get_version (&client->monc,"osdmap" , &newest_epoch); +if (ret) +return ret; + +if (client->osdc.osdmap->epoch >= newest_epoch) +return 0 ; + +ceph_osdc_maybe_request_map (&client->osdc); +return ceph_monc_wait_osdmap (&client->monc, newest_epoch, timeout); +} +EXPORT_SYMBOL (ceph_wait_for_latest_osdmap);static int __init init_ceph_lib (void ) {
net/ceph/mon_client.c +9 -0
@@ -914,6 +914,15 @@ int ceph_monc_blacklist_add(struct ceph_mon_client *monc,mutex_unlock (&monc->mutex); ret =wait_generic_request (req); +if (!ret) +/* +* Make sure we have the osdmap that includes the blacklist +* entry. This is needed to ensure that the OSDs pick up the +* new blacklist before processing any future requests from +* this client. +*/ + ret =ceph_wait_for_latest_osdmap (monc->client,0 ); + out:put_generic_request (req);return ret;
net/dccp/ipv4.c +1 -7
@@ -596,13 +596,7 @@ int dccp_v4_conn_request(struct sock *sk, struct sk_buff *skb)if (inet_csk_reqsk_queue_is_full (sk)) goto drop; -/* -* Accept backlog is full. If we have already queued enough -* of warm entries in syn queue, drop request. It is better than -* clogging syn queue with openreqs with exponentially increasing -* timeout. -*/ -if (sk_acceptq_is_full (sk) &&inet_csk_reqsk_queue_young (sk) >1 ) +if (sk_acceptq_is_full (sk)) goto drop; req =inet_reqsk_alloc (&dccp_request_sock_ops, sk, true);
net/dccp/ipv6.c +1 -1
@@ -328,7 +328,7 @@ static int dccp_v6_conn_request(struct sock *sk, struct sk_buff *skb)if (inet_csk_reqsk_queue_is_full (sk)) goto drop; -if (sk_acceptq_is_full (sk) &&inet_csk_reqsk_queue_young (sk) >1 ) +if (sk_acceptq_is_full (sk)) goto drop; req =inet_reqsk_alloc (&dccp6_request_sock_ops, sk, true);
net/ipv4/tcp_input.c +1 -7
@@ -6374,13 +6374,7 @@ int tcp_conn_request(struct request_sock_ops *rsk_ops, goto drop; } - -/* Accept backlog is full. If we have already queued enough -* of warm entries in syn queue, drop request. It is better than -* clogging syn queue with openreqs with exponentially increasing -* timeout. -*/ -if (sk_acceptq_is_full (sk) &&inet_csk_reqsk_queue_young (sk) >1 ) { +if (sk_acceptq_is_full (sk)) {NET_INC_STATS (sock_net (sk),LINUX_MIB_LISTENOVERFLOWS ); goto drop; }
sound/pci/hda/hda_codec.c +55 -2
71 lines not on this page · raw message
tools/objtool/check.c +2 -1
@@ -2132,9 +2132,10 @@ static void cleanup(struct objtool_file *file)elf_close (file->elf); } +static struct objtool_file file; +int check (const char *_objname,bool orc) { -struct objtool_file file;int ret, warnings =0 ; objname = _objname;