Linux 4.9.303
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.9.303 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:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2 arch/x86/kvm/pmu.c | 2 drivers/ata/libata-core.c | 1 drivers/edac/edac_mc.c | 2 drivers/gpu/drm/radeon/atombios_encoders.c | 3 drivers/i2c/busses/i2c-brcmstb.c | 2 drivers/net/ieee802154/at86rf230.c | 13 +- drivers/net/usb/ax88179_178a.c | 68 ++++++------ drivers/net/usb/qmi_wwan.c | 2 drivers/net/wireless/intel/iwlwifi/pcie/trans.c | 3 drivers/parisc/ccio-dma.c | 3 drivers/parisc/sba_iommu.c | 3 drivers/tty/serial/8250/8250_gsc.c | 2 fs/btrfs/send.c | 4 fs/nfs/dir.c | 4 fs/nfs/inode.c | 9 - fs/quota/dquot.c | 11 + fs/super.c | 19 ++- kernel/trace/trace.c | 4 kernel/tsacct.c | 7 - lib/iov_iter.c | 2 net/ax25/af_ax25.c | 9 + net/core/drop_monitor.c | 11 + net/ipv4/xfrm4_policy.c | 3 net/vmw_vsock/af_vsock.c | 39 +----- scripts/Makefile.extrawarn | 1 sound/pci/hda/hda_intel.c | 5 sound/soc/soc-ops.c | 29 +++-- tools/lib/subcmd/subcmd-util.h | 11 - tools/testing/selftests/zram/zram.sh | 15 -- tools/testing/selftests/zram/zram01.sh | 33 +---- tools/testing/selftests/zram/zram02.sh | 1 tools/testing/selftests/zram/zram_lib.sh | 134 +++++++++++++++--------- 33 files changed, 252 insertions(+), 205 deletions(-)
Darrick J. Wong (2):
vfs: make freeze_super abort when sync_filesystem returns error
quota: make dquot_quota_sync return errors from ->sync_fs
Duoming Zhou (1):
ax25: improve the incomplete fix to avoid UAF and NPD bugs
Dāvis Mosāns (1):
btrfs: send: in case of IO error log it
Eliav Farber (1):
EDAC: Fix calculation of returned address and next offset in edac_align_ptr()
Eric Dumazet (1):
drop_monitor: fix data-race in dropmon_net_event / trace_napi_poll_hit
Eric W. Biederman (1):
taskstats: Cleanup the use of task->exit_code
Greg Kroah-Hartman (1):
Linux 4.9.303
Guillaume Nault (1):
xfrm: Don't accidentally set RTO_ONLINK in decode_session4()
JaeSang Yoo (1):
tracing: Fix tp_printk option related with tp_printk_stop_on_boot
Jann Horn (1):
net: usb: ax88179_178a: Fix out-of-bounds accesses in RX fixup
Jim Mattson (1):
KVM: x86/pmu: Use AMD64_RAW_EVENT_MASK for PERF_TYPE_RAW
Johannes Berg (1):
iwlwifi: pcie: fix locking when "HW not ready"
John David Anglin (2):
parisc: Fix data TLB miss in sba_unmap_sg
parisc: Fix sglist access in ccio-dma.c
Kees Cook (1):
libsubcmd: Fix use-after-free for realloc(..., 0)
Mark Brown (2):
ASoC: ops: Fix stereo change notifications in snd_soc_put_volsw()
ASoC: ops: Fix stereo change notifications in snd_soc_put_volsw_range()
Max Kellermann (1):
lib/iov_iter: initialize "flags" in new pipe_buffer
Miquel Raynal (1):
net: ieee802154: at86rf230: Stop leaking skb's
Nathan Chancellor (1):
Makefile.extrawarn: Move -Wunaligned-access to W=1
Nicholas Bishop (1):
drm/radeon: Fix backlight control on iMac 12,1
Rafał Miłecki (1):
i2c: brcmstb: fix support for DSL and CM variants
Randy Dunlap (1):
serial: parisc: GSC: fix build when IOSAPIC is not set
Seth Forshee (1):
vsock: remove vsock from connected table when connect is interrupted by a signal
Slark Xiao (1):
net: usb: qmi_wwan: Add support for Dell DW5829e
Sunil Muthuswamy (1):
vsock: correct removal of socket from the list
Takashi Iwai (2):
ALSA: hda: Fix regression on forced probe mask option
ALSA: hda: Fix missing codec probe on Shenker Dock 15
Trond Myklebust (2):
NFS: LOOKUP_DIRECTORY is also ok with symlinks
NFS: Do not report writeback errors in nfs_getattr()
Yang Xu (3):
selftests/zram: Skip max_comp_streams interface on newer kernel selftests/zram01.sh: Fix compression ratio calculation selftests/zram: Adapt the situation that /dev/zram0 is being used
Zoltán Böszörményi (1):
ata: libata-core: Disable TRIM on M88V29
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,6 +1,6 @@ VERSION = 4 PATCHLEVEL = 9 -SUBLEVEL = 302 +SUBLEVEL = 303 EXTRAVERSION = NAME = Roaring Lionus
arch/x86/kvm/pmu.c +1 -1
@@ -164,7 +164,7 @@ void reprogram_gp_counter(struct kvm_pmc *pmc, u64 eventsel) }if (type ==PERF_TYPE_RAW ) - config = eventsel &X86_RAW_EVENT_MASK ; + config = eventsel &AMD64_RAW_EVENT_MASK ; pmc_reprogram_counter(pmc, type, config, !(eventsel & ARCH_PERFMON_EVENTSEL_USR),
drivers/ata/libata-core.c +1 -0
@@ -4486,6 +4486,7 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = {/* devices that don't properly handle TRIM commands */ { "SuperSSpeed S238*", NULL, ATA_HORKAGE_NOTRIM, }, + { "M88V29*", NULL, ATA_HORKAGE_NOTRIM, },/* * As defined, the DRAT (Deterministic Read After Trim) and RZAT
drivers/edac/edac_mc.c +1 -1
@@ -199,7 +199,7 @@ void *edac_align_ptr(void **p, unsigned size, int n_elems)else return (char *)ptr; - r = (unsigned long )p % align; + r = (unsigned long )ptr % align;if (r ==0 )return (char *)ptr;
drivers/gpu/drm/radeon/atombios_encoders.c +2 -1
@@ -192,7 +192,8 @@ void radeon_atom_backlight_init(struct radeon_encoder *radeon_encoder,* so don't register a backlight device */ if ((rdev->pdev->subsystem_vendor ==PCI_VENDOR_ID_APPLE ) && - (rdev->pdev->device ==0x6741 )) + (rdev->pdev->device ==0x6741 ) && + !dmi_match (DMI_PRODUCT_NAME ,"iMac12,1" ))return ;if (!radeon_encoder->enc_priv)
drivers/i2c/busses/i2c-brcmstb.c +1 -1
@@ -645,7 +645,7 @@ static int brcmstb_i2c_probe(struct platform_device *pdev)/* set the data in/out register size for compatible SoCs */ if (of_device_is_compatible (dev->device->of_node, -"brcmstb,brcmper-i2c" )) +"brcm,brcmper-i2c" )) dev->data_regsz =sizeof (u8);else dev->data_regsz =sizeof (u32);
drivers/net/ieee802154/at86rf230.c +11 -2
@@ -108,6 +108,7 @@ struct at86rf230_local {unsigned long cal_timeout;bool is_tx;bool is_tx_from_off; +bool was_tx;u8 tx_retry;struct sk_buff *tx_skb;struct at86rf230_state_change tx;
@@ -351,7 +352,11 @@ at86rf230_async_error_recover_complete(void *context)if (ctx->free)kfree (ctx); -ieee802154_wake_queue (lp->hw); +if (lp->was_tx) { + lp->was_tx =0 ; +dev_kfree_skb_any (lp->tx_skb); +ieee802154_wake_queue (lp->hw); + } } static void
@@ -360,7 +365,11 @@ at86rf230_async_error_recover(void *context)struct at86rf230_state_change *ctx = context;struct at86rf230_local *lp = ctx->lp; - lp->is_tx =0 ; +if (lp->is_tx) { + lp->was_tx =1 ; + lp->is_tx =0 ; + } +at86rf230_async_state_change (lp, ctx,STATE_RX_AACK_ON , at86rf230_async_error_recover_complete); }
drivers/net/usb/ax88179_178a.c +39 -29
98 lines not on this page · raw message
drivers/net/usb/qmi_wwan.c +2 -0
@@ -964,6 +964,8 @@ static const struct usb_device_id products[] = { {QMI_FIXED_INTF(0x413c, 0x81d7, 0)}, /* Dell Wireless 5821e */ {QMI_FIXED_INTF(0x413c, 0x81d7, 1)}, /* Dell Wireless 5821e preproduction config */ {QMI_FIXED_INTF(0x413c, 0x81e0, 0)}, /* Dell Wireless 5821e with eSIM support*/ + {QMI_FIXED_INTF(0x413c, 0x81e4, 0)}, /* Dell Wireless 5829e with eSIM support*/ + {QMI_FIXED_INTF(0x413c, 0x81e6, 0)}, /* Dell Wireless 5829e */ {QMI_FIXED_INTF(0x03f0, 0x4e1d, 8)}, /* HP lt4111 LTE/EV-DO/HSPA+ Gobi 4G Module */ {QMI_FIXED_INTF(0x03f0, 0x9d1d, 1)}, /* HP lt4120 Snapdragon X5 LTE */ {QMI_FIXED_INTF(0x22de, 0x9061, 3)}, /* WeTelecom WPD-600N */
drivers/net/wireless/intel/iwlwifi/pcie/trans.c +1 -2
@@ -1183,8 +1183,7 @@ static int iwl_trans_pcie_start_fw(struct iwl_trans *trans,/* This may fail if AMT took ownership of the device */ if (iwl_pcie_prepare_card_hw (trans)) {IWL_WARN (trans,"Exit HW not ready\n" ); - ret = -EIO ; - goto out; +return -EIO ; }iwl_enable_rfkill_int (trans);
drivers/parisc/ccio-dma.c +2 -1
@@ -1008,7 +1008,7 @@ ccio_unmap_sg(struct device *dev, struct scatterlist *sglist, int nents, ioc->usg_calls++;#endif -while (sg_dma_len (sglist) && nents--) { +while (nents &&sg_dma_len (sglist)) {#ifdef CCIO_COLLECT_STATS ioc->usg_pages +=sg_dma_len (sglist) >>PAGE_SHIFT ;
@@ -1016,6 +1016,7 @@ ccio_unmap_sg(struct device *dev, struct scatterlist *sglist, int nents,ccio_unmap_page (dev,sg_dma_address (sglist),sg_dma_len (sglist), direction,0 ); ++sglist; + nents--; }DBG_RUN_SG ("%s() DONE (nents %d)\n" , __func__, nents);
drivers/parisc/sba_iommu.c +2 -1
@@ -1061,7 +1061,7 @@ sba_unmap_sg(struct device *dev, struct scatterlist *sglist, int nents,spin_unlock_irqrestore (&ioc->res_lock, flags);#endif -while (sg_dma_len (sglist) && nents--) { +while (nents &&sg_dma_len (sglist)) {sba_unmap_page (dev,sg_dma_address (sglist),sg_dma_len (sglist), direction,0 );
@@ -1070,6 +1070,7 @@ sba_unmap_sg(struct device *dev, struct scatterlist *sglist, int nents, ioc->usingle_calls--;/* kluge since call is unmap_sg() */ #endif ++sglist; + nents--; }DBG_RUN_SG ("%s() DONE (nents %d)\n" , __func__, nents);
drivers/tty/serial/8250/8250_gsc.c +1 -1
@@ -30,7 +30,7 @@ static int __init serial_init_chip(struct parisc_device *dev)unsigned long address;int err; -#ifdef CONFIG_64BIT +#if defined(CONFIG_64BIT ) && defined(CONFIG_IOSAPIC )if (!dev->irq && (dev->id.sversion ==0xad )) dev->irq =iosapic_serial_irq (dev);#endif
fs/btrfs/send.c +4 -0
@@ -4675,6 +4675,10 @@ static ssize_t fill_read_buf(struct send_ctx *sctx, u64 offset, u32 len)lock_page (page);if (!PageUptodate (page)) {unlock_page (page); +btrfs_err (fs_info, +"send: IO error at offset %llu for inode %llu root %llu" , +page_offset (page), sctx->cur_ino, + sctx->send_root->root_key.objectid);put_page (page); ret = -EIO ;break ;
fs/nfs/dir.c +2 -2
@@ -1605,14 +1605,14 @@ int nfs_atomic_open(struct inode *dir, struct dentry *dentry,if (!res) { inode =d_inode (dentry);if ((lookup_flags &LOOKUP_DIRECTORY ) && inode && - !S_ISDIR (inode->i_mode)) + !(S_ISDIR (inode->i_mode) ||S_ISLNK (inode->i_mode))) res =ERR_PTR (-ENOTDIR );else if (inode &&S_ISREG (inode->i_mode)) res =ERR_PTR (-EOPENSTALE ); }else if (!IS_ERR (res)) { inode =d_inode (res);if ((lookup_flags &LOOKUP_DIRECTORY ) && inode && - !S_ISDIR (inode->i_mode)) { + !(S_ISDIR (inode->i_mode) ||S_ISLNK (inode->i_mode))) {dput (res); res =ERR_PTR (-ENOTDIR ); }else if (inode &&S_ISREG (inode->i_mode)) {
fs/nfs/inode.c +3 -6
@@ -661,11 +661,8 @@ int nfs_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat)trace_nfs_getattr_enter (inode);/* Flush out writes to the server in order to update c/mtime. */ -if (S_ISREG (inode->i_mode)) { - err =filemap_write_and_wait (inode->i_mapping); -if (err) - goto out; - } +if (S_ISREG (inode->i_mode)) +filemap_write_and_wait (inode->i_mapping);/* * We may force a getattr if the user cares about atime.
@@ -693,7 +690,7 @@ int nfs_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat)if (S_ISDIR (inode->i_mode)) stat->blksize =NFS_SERVER (inode)->dtsize; } -out: +trace_nfs_getattr_exit (inode, err);return err; }
fs/quota/dquot.c +8 -3
@@ -676,9 +676,14 @@ int dquot_quota_sync(struct super_block *sb, int type)/* This is not very clever (and fast) but currently I don't know about * any other simple way of getting quota data to disk and we must get * them there for userspace to be visible... */ -if (sb->s_op->sync_fs) - sb->s_op->sync_fs (sb,1 ); -sync_blockdev (sb->s_bdev); +if (sb->s_op->sync_fs) { + ret = sb->s_op->sync_fs (sb,1 ); +if (ret) +return ret; + } + ret =sync_blockdev (sb->s_bdev); +if (ret) +return ret;/* * Now when everything is written we can discard the pagecache so
fs/super.c +12 -7
@@ -1298,11 +1298,9 @@ static void lockdep_sb_freeze_acquire(struct super_block *sb)percpu_rwsem_acquire (sb->s_writers.rw_sem + level,0 , _THIS_IP_); } -static void sb_freeze_unlock (struct super_block *sb) +static void sb_freeze_unlock (struct super_block *sb,int level) { -int level; - -for (level =SB_FREEZE_LEVELS -1 ; level >=0 ; level--) +for (level--; level >=0 ; level--)percpu_up_write (sb->s_writers.rw_sem + level); }
@@ -1373,7 +1371,14 @@ int freeze_super(struct super_block *sb)sb_wait_write (sb,SB_FREEZE_PAGEFAULT );/* All writers are done so after syncing there won't be dirty data */ -sync_filesystem (sb); + ret =sync_filesystem (sb); +if (ret) { + sb->s_writers.frozen =SB_UNFROZEN ; +sb_freeze_unlock (sb,SB_FREEZE_PAGEFAULT ); +wake_up (&sb->s_writers.wait_unfrozen); +deactivate_locked_super (sb); +return ret; + }/* Now wait for internal filesystem counter */ sb->s_writers.frozen =SB_FREEZE_FS ;
@@ -1385,7 +1390,7 @@ int freeze_super(struct super_block *sb)printk (KERN_ERR "VFS:Filesystem freeze failed\n" ); sb->s_writers.frozen =SB_UNFROZEN ; -sb_freeze_unlock (sb); +sb_freeze_unlock (sb,SB_FREEZE_FS );wake_up (&sb->s_writers.wait_unfrozen);deactivate_locked_super (sb);return ret;
@@ -1437,7 +1442,7 @@ int thaw_super(struct super_block *sb) } sb->s_writers.frozen =SB_UNFROZEN ; -sb_freeze_unlock (sb); +sb_freeze_unlock (sb,SB_FREEZE_FS ); out:wake_up (&sb->s_writers.wait_unfrozen);deactivate_locked_super (sb);
kernel/trace/trace.c +4 -0
@@ -228,6 +228,10 @@ __setup("trace_clock=", set_trace_boot_clock);static int __init set_tracepoint_printk (char *str) { +/* Ignore the "tp_printk_stop_on_boot" param */ +if (*str =='_' ) +return 0 ; +if ((strcmp (str,"=0" ) !=0 &&strcmp (str,"=off" ) !=0 )) tracepoint_printk =1 ;return 1 ;
kernel/tsacct.c +3 -4
@@ -44,11 +44,10 @@ void bacct_add_tsk(struct user_namespace *user_ns,/* Convert to seconds for btime */ do_div (delta,USEC_PER_SEC ); stats->ac_btime =get_seconds () - delta; -if (thread_group_leader (tsk)) { +if (tsk->flags &PF_EXITING ) stats->ac_exitcode = tsk->exit_code; -if (tsk->flags &PF_FORKNOEXEC ) - stats->ac_flag |=AFORK ; - } +if (thread_group_leader (tsk) && (tsk->flags &PF_FORKNOEXEC )) + stats->ac_flag |=AFORK ;if (tsk->flags &PF_SUPERPRIV ) stats->ac_flag |=ASU ;if (tsk->flags &PF_DUMPCORE )
lib/iov_iter.c +2 -0
@@ -370,6 +370,7 @@ static size_t copy_page_to_iter_pipe(struct page *page, size_t offset, size_t byreturn 0 ; pipe->nrbufs++; buf->ops = &page_cache_pipe_buf_ops; + buf->flags =0 ;get_page (buf->page = page); buf->offset = offset; buf->len = bytes;
@@ -494,6 +495,7 @@ static size_t push_pipe(struct iov_iter *i, size_t size,break ; pipe->nrbufs++; pipe->bufs[idx].ops = &default_pipe_buf_ops; + pipe->bufs[idx].flags =0 ; pipe->bufs[idx].page = page; pipe->bufs[idx].offset =0 ;if (left <=PAGE_SIZE ) {
net/ax25/af_ax25.c +6 -3
@@ -80,6 +80,7 @@ static void ax25_kill_by_device(struct net_device *dev) {ax25_dev *ax25_dev;ax25_cb *s; +struct sock *sk;if ((ax25_dev =ax25_dev_ax25dev (dev)) ==NULL )return ;
@@ -88,13 +89,15 @@ static void ax25_kill_by_device(struct net_device *dev) again:ax25_for_each (s, &ax25_list) {if (s->ax25_dev == ax25_dev) { + sk = s->sk; +sock_hold (sk);spin_unlock_bh (&ax25_list_lock); -lock_sock (s->sk); +lock_sock (sk); s->ax25_dev =NULL ; -release_sock (s->sk); +release_sock (sk);ax25_disconnect (s,ENETUNREACH );spin_lock_bh (&ax25_list_lock); - +sock_put (sk);/* The entry could have been deleted from the * list meanwhile and thus the next pointer is * no longer valid. Play it safe and restart
net/core/drop_monitor.c +9 -2
@@ -224,13 +224,17 @@ static void trace_napi_poll_hit(void *ignore, struct napi_struct *napi,rcu_read_lock ();list_for_each_entry_rcu (new_stat, &hw_stats_list, list) { +struct net_device *dev; +/* * only add a note to our monitor buffer if: * 1) this is the dev we received on * 2) its after the last_rx delta * 3) our rx_dropped count has gone up */ -if ((new_stat->dev == napi->dev) && +/* Paired with WRITE_ONCE() in dropmon_net_event() */ + dev =READ_ONCE (new_stat->dev); +if ((dev == napi->dev) && (time_after (jiffies, new_stat->last_rx + dm_hw_check_delta)) && (napi->dev->stats.rx_dropped != new_stat->last_drop_val)) {trace_drop_common (NULL ,NULL );
@@ -345,7 +349,10 @@ static int dropmon_net_event(struct notifier_block *ev_block,mutex_lock (&trace_state_mutex);list_for_each_entry_safe (new_stat, tmp, &hw_stats_list, list) {if (new_stat->dev == dev) { - new_stat->dev =NULL ; + +/* Paired with READ_ONCE() in trace_napi_poll_hit() */ +WRITE_ONCE (new_stat->dev,NULL ); +if (trace_state ==TRACE_OFF ) {list_del_rcu (&new_stat->list);kfree_rcu (new_stat, rcu);
net/ipv4/xfrm4_policy.c +2 -1
@@ -16,6 +16,7 @@#include <net/xfrm.h> #include <net/ip.h> #include <net/l3mdev.h> +#include <net/inet_ecn.h> static struct xfrm_policy_afinfo xfrm4_policy_afinfo;
@@ -123,7 +124,7 @@ _decode_session4(struct sk_buff *skb, struct flowi *fl, int reverse) fl4->flowi4_proto = iph->protocol; fl4->daddr = reverse ? iph->saddr : iph->daddr; fl4->saddr = reverse ? iph->daddr : iph->saddr; - fl4->flowi4_tos = iph->tos; + fl4->flowi4_tos = iph->tos & ~INET_ECN_MASK ;if (!ip_is_fragment (iph)) {switch (iph->protocol) {
net/vmw_vsock/af_vsock.c +8 -31
@@ -279,7 +279,8 @@ EXPORT_SYMBOL_GPL(vsock_insert_connected);void vsock_remove_bound (struct vsock_sock *vsk) {spin_lock_bh (&vsock_table_lock); -__vsock_remove_bound (vsk); +if (__vsock_in_bound_table (vsk)) +__vsock_remove_bound (vsk);spin_unlock_bh (&vsock_table_lock); }EXPORT_SYMBOL_GPL (vsock_remove_bound);
@@ -287,7 +288,8 @@ EXPORT_SYMBOL_GPL(vsock_remove_bound);void vsock_remove_connected (struct vsock_sock *vsk) {spin_lock_bh (&vsock_table_lock); -__vsock_remove_connected (vsk); +if (__vsock_in_connected_table (vsk)) +__vsock_remove_connected (vsk);spin_unlock_bh (&vsock_table_lock); }EXPORT_SYMBOL_GPL (vsock_remove_connected);
@@ -323,35 +325,10 @@ struct sock *vsock_find_connected_socket(struct sockaddr_vm *src, }EXPORT_SYMBOL_GPL (vsock_find_connected_socket); -static bool vsock_in_bound_table (struct vsock_sock *vsk) -{ -bool ret; - -spin_lock_bh (&vsock_table_lock); - ret =__vsock_in_bound_table (vsk); -spin_unlock_bh (&vsock_table_lock); - -return ret; -} - -static bool vsock_in_connected_table (struct vsock_sock *vsk) -{ -bool ret; - -spin_lock_bh (&vsock_table_lock); - ret =__vsock_in_connected_table (vsk); -spin_unlock_bh (&vsock_table_lock); - -return ret; -} -void vsock_remove_sock (struct vsock_sock *vsk) { -if (vsock_in_bound_table (vsk)) -vsock_remove_bound (vsk); - -if (vsock_in_connected_table (vsk)) -vsock_remove_connected (vsk); +vsock_remove_bound (vsk); +vsock_remove_connected (vsk); }EXPORT_SYMBOL_GPL (vsock_remove_sock);
@@ -482,8 +459,7 @@ static void vsock_pending_work(struct work_struct *work)* incoming packets can't find this socket, and to reduce the reference * count. */ -if (vsock_in_connected_table (vsk)) -vsock_remove_connected (vsk); +vsock_remove_connected (vsk); sk->sk_state =SS_FREE ;
@@ -1244,6 +1220,7 @@ static int vsock_stream_connect(struct socket *sock, struct sockaddr *addr, sk->sk_state =SS_UNCONNECTED ; sock->state =SS_UNCONNECTED ;vsock_transport_cancel_pkt (vsk); +vsock_remove_connected (vsk); goto out_wait; }else if (timeout ==0 ) { err = -ETIMEDOUT ;
scripts/Makefile.extrawarn +1 -0
@@ -71,5 +71,6 @@ KBUILD_CFLAGS += $(call cc-disable-warning, sign-compare) KBUILD_CFLAGS += $(call cc-disable-warning, format-zero-length) KBUILD_CFLAGS += $(call cc-disable-warning, uninitialized) KBUILD_CFLAGS += $(call cc-disable-warning, pointer-to-enum-cast) +KBUILD_CFLAGS += $(call cc-disable-warning, unaligned-access) endif endif
sound/pci/hda/hda_intel.c +3 -2
@@ -1424,6 +1424,7 @@ static struct snd_pci_quirk probe_mask_list[] = {/* forced codec slots */ SND_PCI_QUIRK (0x1043 ,0x1262 ,"ASUS W5Fm" ,0x103 ),SND_PCI_QUIRK (0x1046 ,0x1262 ,"ASUS W5F" ,0x103 ), +SND_PCI_QUIRK (0x1558 ,0x0351 ,"Schenker Dock 15" ,0x105 ),/* WinFast VP200 H (Teradici) user reported broken communication */ SND_PCI_QUIRK(0x3a21, 0x040d, "WinFast VP200 H", 0x101), {}
@@ -1609,8 +1610,6 @@ static int azx_create(struct snd_card *card, struct pci_dev *pci,assign_position_fix (chip,check_position_fix (chip, position_fix[dev])); -check_probe_mask (chip, dev); - chip->single_cmd = single_cmd;azx_check_snoop_available (chip);
@@ -1631,6 +1630,8 @@ static int azx_create(struct snd_card *card, struct pci_dev *pci, chip->bus.needs_damn_long_delay =1 ; } +check_probe_mask (chip, dev); + err =snd_device_new (card,SNDRV_DEV_LOWLEVEL , chip, &ops);if (err <0 ) {dev_err (card->dev,"Error creating device [card]!\n" );
sound/soc/soc-ops.c +20 -9
@@ -319,7 +319,7 @@ int snd_soc_put_volsw(struct snd_kcontrol *kcontrol,unsigned int sign_bit = mc->sign_bit;unsigned int mask = (1 <<fls (max)) -1 ;unsigned int invert = mc->invert; -int err; +int err, ret;bool type_2r = false;unsigned int val2 =0 ;unsigned int val, val_mask;
@@ -361,12 +361,18 @@ int snd_soc_put_volsw(struct snd_kcontrol *kcontrol, err =snd_soc_component_update_bits (component, reg, val_mask, val);if (err <0 )return err; + ret = err; -if (type_2r) +if (type_2r) { err =snd_soc_component_update_bits (component, reg2, val_mask, - val2); + val2); +/* Don't discard any error code or drop change flag */ +if (ret ==0 || err <0 ) { + ret = err; + } + } -return err; +return ret; }EXPORT_SYMBOL_GPL (snd_soc_put_volsw);
@@ -522,7 +528,7 @@ int snd_soc_put_volsw_range(struct snd_kcontrol *kcontrol,unsigned int mask = (1 <<fls (max)) -1 ;unsigned int invert = mc->invert;unsigned int val, val_mask; -int ret; +int err, ret;if (invert) val = (max - ucontrol->value.integer.value[0 ]) & mask;
@@ -531,9 +537,10 @@ int snd_soc_put_volsw_range(struct snd_kcontrol *kcontrol, val_mask = mask << shift; val = val << shift; - ret =snd_soc_component_update_bits (component, reg, val_mask, val); -if (ret <0 ) -return ret; + err =snd_soc_component_update_bits (component, reg, val_mask, val); +if (err <0 ) +return err; + ret = err;if (snd_soc_volsw_is_stereo (mc)) {if (invert)
@@ -543,8 +550,12 @@ int snd_soc_put_volsw_range(struct snd_kcontrol *kcontrol, val_mask = mask << shift; val = val << shift; - ret =snd_soc_component_update_bits (component, rreg, val_mask, + err =snd_soc_component_update_bits (component, rreg, val_mask, val); +/* Don't discard any error code or drop change flag */ +if (ret ==0 || err <0 ) { + ret = err; + } }return ret;
tools/lib/subcmd/subcmd-util.h +2 -9
@@ -49,15 +49,8 @@ static NORETURN inline void die(const char *err, ...)static inline void *xrealloc (void *ptr,size_t size) {void *ret =realloc (ptr, size); -if (!ret && !size) - ret =realloc (ptr,1 ); -if (!ret) { - ret =realloc (ptr, size); -if (!ret && !size) - ret =realloc (ptr,1 ); -if (!ret) -die ("Out of memory, realloc failed" ); - } +if (!ret) +die ("Out of memory, realloc failed" );return ret; }
tools/testing/selftests/zram/zram.sh +1 -14
@@ -1,9 +1,6 @@ #!/bin/bash TCID="zram.sh" -# Kselftest framework requirement - SKIP code is 4. -ksft_skip=4 - . ./zram_lib.sh run_zram () {
@@ -17,14 +14,4 @@ echo "" check_prereqs -# check zram module exists -MODULE_PATH=/lib/modules/`uname -r`/kernel/drivers/block/zram/zram.ko -if [ -f $MODULE_PATH ]; then - run_zram -elif [ -b /dev/zram0 ]; then - run_zram -else - echo "$TCID : No zram.ko module or /dev/zram0 device file not found" - echo "$TCID : CONFIG_ZRAM is not set" - exit $ksft_skip -fi +run_zram
tools/testing/selftests/zram/zram01.sh +9 -24
@@ -42,9 +42,7 @@ zram_algs="lzo" zram_fill_fs() { - local mem_free0=$(free -m | awk 'NR==2 {print $4}') - - for i in $(seq 0 $(($dev_num - 1))); do + for i in $(seq $dev_start $dev_end); do echo "fill zram$i..." local b=0 while [ true ]; do
@@ -54,29 +52,17 @@ zram_fill_fs() b=$(($b + 1)) done echo "zram$i can be filled with '$b' KB" - done - local mem_free1=$(free -m | awk 'NR==2 {print $4}') - local used_mem=$(($mem_free0 - $mem_free1)) + local mem_used_total=`awk '{print $3}' "/sys/block/zram$i/mm_stat"` + local v=$((100 * 1024 * $b / $mem_used_total)) + if [ "$v" -lt 100 ]; then + echo "FAIL compression ratio: 0.$v:1" + ERR_CODE=-1 + return + fi - local total_size=0 - for sm in $zram_sizes; do - local s=$(echo $sm | sed 's/M//') - total_size=$(($total_size + $s)) + echo "zram compression ratio: $(echo "scale=2; $v / 100 " | bc):1: OK" done - - echo "zram used ${used_mem}M, zram disk sizes ${total_size}M" - - local v=$((100 * $total_size / $used_mem)) - - if [ "$v" -lt 100 ]; then - echo "FAIL compression ratio: 0.$v:1" - ERR_CODE=-1 - zram_cleanup - return - fi - - echo "zram compression ratio: $(echo "scale=2; $v / 100 " | bc):1: OK" } check_prereqs
@@ -90,7 +76,6 @@ zram_mount zram_fill_fs zram_cleanup -zram_unload if [ $ERR_CODE -ne 0 ]; then echo "$TCID : [FAIL]"
tools/testing/selftests/zram/zram02.sh +0 -1
@@ -45,7 +45,6 @@ zram_set_memlimit zram_makeswap zram_swapoff zram_cleanup -zram_unload if [ $ERR_CODE -ne 0 ]; then echo "$TCID : [FAIL]"
tools/testing/selftests/zram/zram_lib.sh +88 -46
247 lines not on this page · raw message