Linux 4.4.253
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.4.253 kernel.
All users of the 4.4 kernel series must upgrade.
The updated 4.4.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.4.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/arc/Makefile | 1 + arch/arc/include/asm/page.h | 1 + arch/arm/boot/dts/picoxcell-pc3x2.dtsi | 4 ++++ drivers/iio/industrialio-buffer.c | 6 +++--- drivers/infiniband/hw/usnic/usnic_ib_verbs.c | 3 +++ drivers/input/ff-core.c | 13 ++++++++++--- drivers/input/misc/uinput.c | 18 ++++++++++++++++++ drivers/isdn/mISDN/Kconfig | 1 + drivers/net/ethernet/freescale/fs_enet/mii-bitbang.c | 1 + drivers/net/ethernet/freescale/fs_enet/mii-fec.c | 1 + drivers/net/ethernet/freescale/ucc_geth.h | 9 ++++++++- drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c | 7 +------ drivers/net/usb/cdc_ncm.c | 8 ++++++-- drivers/net/usb/rndis_host.c | 2 +- drivers/spi/spi-cadence.c | 6 ++++-- drivers/usb/host/ohci-hcd.c | 2 +- fs/ext4/ioctl.c | 3 +++ fs/ext4/namei.c | 16 +++++++++------- fs/nfs/internal.h | 12 +++++++----- fs/nfsd/nfs3xdr.c | 7 ++++++- include/linux/acpi.h | 7 +++++++ include/linux/input.h | 1 + mm/hugetlb.c | 2 +- mm/slub.c | 2 +- net/core/skbuff.c | 9 +++++++-- net/dcb/dcbnl.c | 2 ++ net/ipv6/sit.c | 5 ++++- net/rxrpc/ar-key.c | 6 ++++-- net/sunrpc/addr.c | 2 +- security/lsm_audit.c | 7 +++++-- sound/soc/soc-dapm.c | 1 + 32 files changed, 124 insertions(+), 43 deletions(-)
Al Viro (1):
dump_common_audit_data(): fix racy accesses to ->d_name
Andrey Zhizhikin (1):
rndis_host: set proper input size for OID_GEN_PHYSICAL_MEDIUM request
Arnd Bergmann (2):
misdn: dsp: select CONFIG_BITREVERSE
ARM: picoxcell: fix missing interrupt-parent properties
David Howells (1):
rxrpc: Fix handling of an unsupported token type in rxrpc_read()
Dinghao Liu (1):
RDMA/usnic: Fix memleak in find_free_vf_and_create_qp_grp
Dmitry Torokhov (1):
Input: uinput - avoid FF flush when destroying device
Eric Dumazet (1):
net: avoid 32 x truesize under-estimation for tiny skbs
Greg Kroah-Hartman (1):
Linux 4.4.253
Hamish Martin (1):
usb: ohci: Make distrust_firmware param default to false
J. Bruce Fields (1):
nfsd4: readdirplus shouldn't return parent of export
Jakub Kicinski (1):
net: sit: unregister_netdevice on newlink's error path
Jan Kara (1):
ext4: fix superblock checksum failure when setting password salt
Jann Horn (1):
mm, slub: consider rest of partial list if acquire_slab() fails
Jouni K. Seppänen (1):
net: cdc_ncm: correct overhead in delayed_ndp_size
Manish Chopra (1):
netxen_nic: fix MSI/MSI-x interrupts
Masahiro Yamada (1):
ARC: build: add boot_targets to PHONY
Miaohe Lin (1):
mm/hugetlb: fix potential missing huge page size info
Michael Ellerman (1):
net: ethernet: fs_enet: Add missing MODULE_LICENSE
Michael Hennerich (1):
spi: cadence: cache reference clock rate during probe
Nuno Sá (1):
iio: buffer: Fix demux update
Petr Machata (2):
net: dcb: Validate netlink message in DCB handler
net: dcb: Accept RTM_GETDCB messages carrying set-like DCB commands
Randy Dunlap (1):
arch/arc: add copy_user_page() to <asm/page.h> to fix build error on ARC
Rasmus Villemoes (1):
ethernet: ucc_geth: fix definition and size of ucc_geth_tx_global_pram
Shawn Guo (1):
ACPI: scan: add stub acpi_create_platform_device() for !CONFIG_ACPI
Thomas Hebb (1):
ASoC: dapm: remove widget from dirty list on free
Trond Myklebust (1):
NFS: nfs_igrab_and_active must first reference the superblock
[email protected] (1):
net: sunrpc: interpret the return value of kstrtou32 correctly
yangerkun (1):
ext4: fix bug for rename with RENAME_WHITEOUT
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,6 +1,6 @@ VERSION = 4 PATCHLEVEL = 4 -SUBLEVEL = 252 +SUBLEVEL = 253 EXTRAVERSION = NAME = Blurry Fish Butt
arch/arc/Makefile +1 -0
@@ -108,6 +108,7 @@ bootpImage: vmlinux boot_targets += uImage uImage.bin uImage.gz +PHONY += $(boot_targets) $(boot_targets): vmlinux $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
arch/arc/include/asm/page.h +1 -0
@@ -17,6 +17,7 @@#define free_user_page (page, addr) free_page(addr)#define clear_page (paddr) memset((paddr), 0, PAGE_SIZE) +#define copy_user_page (to, from, vaddr, pg) copy_page(to, from)#define copy_page (to, from) memcpy((to), (from), PAGE_SIZE)struct vm_area_struct ;
arch/arm/boot/dts/picoxcell-pc3x2.dtsi +4 -0
@@ -54,18 +54,21 @@ emac: gem@30000 { compatible = "cadence,gem"; reg = <0x30000 0x10000>; + interrupt-parent = <&vic0>; interrupts = <31>; }; dmac1: dmac@40000 { compatible = "snps,dw-dmac"; reg = <0x40000 0x10000>; + interrupt-parent = <&vic0>; interrupts = <25>; }; dmac2: dmac@50000 { compatible = "snps,dw-dmac"; reg = <0x50000 0x10000>; + interrupt-parent = <&vic0>; interrupts = <26>; };
@@ -243,6 +246,7 @@ axi2pico@c0000000 { compatible = "picochip,axi2pico-pc3x2"; reg = <0xc0000000 0x10000>; + interrupt-parent = <&vic0>; interrupts = <13 14 15 16 17 18 19 20 21>; }; };
drivers/iio/industrialio-buffer.c +3 -3
@@ -1281,9 +1281,6 @@ static int iio_buffer_update_demux(struct iio_dev *indio_dev, indio_dev->masklength, in_ind + 1);while (in_ind != out_ind) { - in_ind =find_next_bit (indio_dev->active_scan_mask, - indio_dev->masklength, - in_ind +1 ); ch =iio_find_channel_from_si (indio_dev, in_ind);if (ch->scan_type.repeat >1 ) length = ch->scan_type.storagebits / 8 *
@@ -1292,6 +1289,9 @@ static int iio_buffer_update_demux(struct iio_dev *indio_dev, length = ch->scan_type.storagebits /8 ;/* Make sure we are aligned */ in_loc =roundup (in_loc, length) + length; + in_ind =find_next_bit (indio_dev->active_scan_mask, + indio_dev->masklength, + in_ind +1 ); } ch =iio_find_channel_from_si (indio_dev, in_ind);if (ch->scan_type.repeat >1 )
drivers/infiniband/hw/usnic/usnic_ib_verbs.c +3 -0
@@ -180,6 +180,7 @@ find_free_vf_and_create_qp_grp(struct usnic_ib_dev *us_ibdev, }usnic_uiom_free_dev_list (dev_list); + dev_list =NULL ; }if (!found) {
@@ -207,6 +208,8 @@ find_free_vf_and_create_qp_grp(struct usnic_ib_dev *us_ibdev,spin_unlock (&vf->lock);if (IS_ERR_OR_NULL (qp_grp)) {usnic_err ("Failed to allocate qp_grp\n" ); +if (usnic_ib_share_vf) +usnic_uiom_free_dev_list (dev_list);return ERR_PTR (qp_grp ?PTR_ERR (qp_grp) : -ENOMEM ); }
drivers/input/ff-core.c +10 -3
@@ -237,9 +237,15 @@ int input_ff_erase(struct input_dev *dev, int effect_id, struct file *file)EXPORT_SYMBOL_GPL (input_ff_erase);/* -* flush_effects - erase all effects owned by a file handle +* input_ff_flush - erase all effects owned by a file handle +* @dev: input device to erase effect from +* @file: purported owner of the effects +* +* This function erases all force-feedback effects associated with +* the given owner from specified device. Note that @file may be %NULL, +* in which case all effects will be erased. */ -static int flush_effects (struct input_dev *dev,struct file *file) +int input_ff_flush (struct input_dev *dev,struct file *file) {struct ff_device *ff = dev->ff;int i;
@@ -255,6 +261,7 @@ static int flush_effects(struct input_dev *dev, struct file *file)return 0 ; } +EXPORT_SYMBOL_GPL (input_ff_flush);/** * input_ff_event() - generic handler for force-feedback events
@@ -343,7 +350,7 @@ int input_ff_create(struct input_dev *dev, unsigned int max_effects)mutex_init (&ff->mutex); dev->ff = ff; - dev->flush = flush_effects; + dev->flush = input_ff_flush; dev->event = input_ff_event;__set_bit (EV_FF , dev->evbit);
drivers/input/misc/uinput.c +18 -0
@@ -230,6 +230,18 @@ static int uinput_dev_erase_effect(struct input_dev *dev, int effect_id)return uinput_request_submit (udev, &request); } +static int uinput_dev_flush (struct input_dev *dev,struct file *file) +{ +/* +* If we are called with file == NULL that means we are tearing +* down the device, and therefore we can not handle FF erase +* requests: either we are handling UI_DEV_DESTROY (and holding +* the udev->mutex), or the file descriptor is closed and there is +* nobody on the other side anymore. +*/ +return file ?input_ff_flush (dev, file) :0 ; +} +static void uinput_destroy_device (struct uinput_device *udev) {const char *name, *phys;
@@ -273,6 +285,12 @@ static int uinput_create_device(struct uinput_device *udev) dev->ff->playback = uinput_dev_playback; dev->ff->set_gain = uinput_dev_set_gain; dev->ff->set_autocenter = uinput_dev_set_autocenter; +/* +* The standard input_ff_flush() implementation does +* not quite work for uinput as we can't reasonably +* handle FF requests during device teardown. +*/ + dev->flush = uinput_dev_flush; } error =input_register_device (udev->dev);
drivers/isdn/mISDN/Kconfig +1 -0
@@ -12,6 +12,7 @@ if MISDN != n config MISDN_DSP tristate "Digital Audio Processing of transparent data" depends on MISDN + select BITREVERSE help Enable support for digital audio processing capability.
drivers/net/ethernet/freescale/fs_enet/mii-bitbang.c +1 -0
@@ -231,3 +231,4 @@ static struct platform_driver fs_enet_bb_mdio_driver = { };module_platform_driver (fs_enet_bb_mdio_driver); +MODULE_LICENSE ("GPL" );
drivers/net/ethernet/freescale/fs_enet/mii-fec.c +1 -0
@@ -232,3 +232,4 @@ static struct platform_driver fs_enet_fec_mdio_driver = { };module_platform_driver (fs_enet_fec_mdio_driver); +MODULE_LICENSE ("GPL" );
drivers/net/ethernet/freescale/ucc_geth.h +8 -1
@@ -580,7 +580,14 @@ struct ucc_geth_tx_global_pram {u32 vtagtable[0x8 ];/* 8 4-byte VLAN tags */ u32 tqptr;/* a base pointer to the Tx Queues Memory Region */ -u8 res2[0x80 -0x74 ]; +u8 res2[0x78 -0x74 ]; +u64 snums_en; +u32 l2l3baseptr;/* top byte consists of a few other bit fields */ + +u16 mtu[8 ]; +u8 res3[0xa8 -0x94 ]; +u32 wrrtablebase;/* top byte is reserved */ +u8 res4[0xc0 -0xac ]; } __packed;/* structure representing Extended Filtering Global Parameters in PRAM */
drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c +1 -6
@@ -586,11 +586,6 @@ static const struct net_device_ops netxen_netdev_ops = {#endif }; -static inline bool netxen_function_zero (struct pci_dev *pdev) -{ -return (PCI_FUNC (pdev->devfn) ==0 ) ? true : false; -} -static inline void netxen_set_interrupt_mode (struct netxen_adapter *adapter,u32 mode) {
@@ -686,7 +681,7 @@ static int netxen_setup_intr(struct netxen_adapter *adapter)netxen_initialize_interrupt_registers (adapter);netxen_set_msix_bit (pdev,0 ); -if (netxen_function_zero (pdev)) { +if (adapter->portnum ==0 ) {if (!netxen_setup_msi_interrupts (adapter, num_msix))netxen_set_interrupt_mode (adapter,NETXEN_MSI_MODE );else
drivers/net/usb/cdc_ncm.c +6 -2
@@ -1079,7 +1079,10 @@ cdc_ncm_fill_tx_frame(struct usbnet *dev, struct sk_buff *skb, __le32 sign)* accordingly. Otherwise, we should check here. */ if (ctx->drvflags &CDC_NCM_FLAG_NDP_TO_END ) - delayed_ndp_size =ALIGN (ctx->max_ndp_size, ctx->tx_ndp_modulus); + delayed_ndp_size = ctx->max_ndp_size + +max_t (u32, + ctx->tx_ndp_modulus, + ctx->tx_modulus + ctx->tx_remainder) -1 ;else delayed_ndp_size =0 ;
@@ -1232,7 +1235,8 @@ cdc_ncm_fill_tx_frame(struct usbnet *dev, struct sk_buff *skb, __le32 sign)if (!(dev->driver_info->flags &FLAG_SEND_ZLP ) && skb_out->len > ctx->min_tx_pkt) { padding_count = ctx->tx_max - skb_out->len; -memset (skb_put (skb_out, padding_count),0 , padding_count); +if (!WARN_ON (padding_count > ctx->tx_max)) +memset (skb_put (skb_out, padding_count),0 , padding_count); }else if (skb_out->len < ctx->tx_max && (skb_out->len % dev->maxpacket) ==0 ) { *skb_put (skb_out,1 ) =0 ;/* force short packet */
drivers/net/usb/rndis_host.c +1 -1
@@ -398,7 +398,7 @@ generic_rndis_bind(struct usbnet *dev, struct usb_interface *intf, int flags) reply_len =sizeof *phym; retval =rndis_query (dev, intf, u.buf,RNDIS_OID_GEN_PHYSICAL_MEDIUM , -0 , (void **) &phym, &reply_len); + reply_len, (void **)&phym, &reply_len);if (retval !=0 || !phym) {/* OID is optional so don't fail here. */ phym_unspec =cpu_to_le32 (RNDIS_PHYSICAL_MEDIUM_UNSPECIFIED );
drivers/spi/spi-cadence.c +4 -2
@@ -116,6 +116,7 @@ struct cdns_spi {void __iomem *regs;struct clk *ref_clk;struct clk *pclk; +unsigned int clk_rate;u32 speed_hz;const u8 *txbuf;u8 *rxbuf;
@@ -257,7 +258,7 @@ static void cdns_spi_config_clock_freq(struct spi_device *spi,u32 ctrl_reg, baud_rate_val;unsigned long frequency; - frequency =clk_get_rate (xspi->ref_clk); + frequency = xspi->clk_rate; ctrl_reg =cdns_spi_read (xspi,CDNS_SPI_CR_OFFSET );
@@ -557,8 +558,9 @@ static int cdns_spi_probe(struct platform_device *pdev) master->set_cs = cdns_spi_chipselect; master->mode_bits =SPI_CPOL |SPI_CPHA ; + xspi->clk_rate =clk_get_rate (xspi->ref_clk);/* Set to default valid value */ - master->max_speed_hz =clk_get_rate (xspi->ref_clk) /4 ; + master->max_speed_hz = xspi->clk_rate /4 ; xspi->speed_hz = master->max_speed_hz; master->bits_per_word_mask =SPI_BPW_MASK (8 );
drivers/usb/host/ohci-hcd.c +1 -1
@@ -99,7 +99,7 @@ static void io_watchdog_func(unsigned long _ohci);/* Some boards misreport power switching/overcurrent */ -static bool distrust_firmware =1 ; +static bool distrust_firmware;module_param (distrust_firmware, bool,0 );MODULE_PARM_DESC (distrust_firmware,"true to distrust firmware power/overcurrent setup" );
fs/ext4/ioctl.c +3 -0
@@ -675,7 +675,10 @@ encryption_policy_out: err =ext4_journal_get_write_access (handle, sbi->s_sbh);if (err) goto pwsalt_err_journal; +lock_buffer (sbi->s_sbh);generate_random_uuid (sbi->s_es->s_encrypt_pw_salt); +ext4_superblock_csum_set (sb); +unlock_buffer (sbi->s_sbh); err =ext4_handle_dirty_metadata (handle,NULL , sbi->s_sbh); pwsalt_err_journal:
fs/ext4/namei.c +9 -7
@@ -3371,8 +3371,6 @@ static int ext4_setent(handle_t *handle, struct ext4_renament *ent,return retval; } } -brelse (ent->bh); - ent->bh =NULL ;return 0 ; }
@@ -3575,6 +3573,7 @@ static int ext4_rename(struct inode *old_dir, struct dentry *old_dentry, } } + old_file_type = old.de->file_type;if (IS_DIRSYNC (old.dir) ||IS_DIRSYNC (new.dir))ext4_handle_sync (handle);
@@ -3602,7 +3601,6 @@ static int ext4_rename(struct inode *old_dir, struct dentry *old_dentry, force_reread = (new.dir->i_ino == old.dir->i_ino &&ext4_test_inode_flag (new.dir,EXT4_INODE_INLINE_DATA )); - old_file_type = old.de->file_type;if (whiteout) {/* * Do this before adding a new entry, so the old entry is sure
@@ -3674,15 +3672,19 @@ static int ext4_rename(struct inode *old_dir, struct dentry *old_dentry, retval =0 ; end_rename: -brelse (old.dir_bh); -brelse (old.bh); -brelse (new.bh);if (whiteout) { -if (retval) +if (retval) { +ext4_setent (handle, &old, + old.inode->i_ino, old_file_type);drop_nlink (whiteout); + }unlock_new_inode (whiteout);iput (whiteout); + } +brelse (old.dir_bh); +brelse (old.bh); +brelse (new.bh);if (handle)ext4_journal_stop (handle);return retval;
fs/nfs/internal.h +7 -5
@@ -534,12 +534,14 @@ extern int nfs41_walk_client_list(struct nfs_client *clp,static inline struct inode *nfs_igrab_and_active (struct inode *inode) { - inode =igrab (inode); -if (inode !=NULL && !nfs_sb_active (inode->i_sb)) { -iput (inode); - inode =NULL ; +struct super_block *sb = inode->i_sb; + +if (sb &&nfs_sb_active (sb)) { +if (igrab (inode)) +return inode; +nfs_sb_deactive (sb); } -return inode; +return NULL ; }static inline void nfs_iput_and_deactive (struct inode *inode)
fs/nfsd/nfs3xdr.c +6 -1
@@ -821,9 +821,14 @@ compose_entry_fh(struct nfsd3_readdirres *cd, struct svc_fh *fhp,if (isdotent (name, namlen)) {if (namlen ==2 ) { dchild =dget_parent (dparent); -/* filesystem root - cannot return filehandle for ".." */ +/* +* Don't return filehandle for ".." if we're at +* the filesystem or export root: +*/ if (dchild == dparent) goto out; +if (dparent == exp->ex_path.dentry) + goto out; }else dchild =dget (dparent); }else
include/linux/acpi.h +7 -0
@@ -604,6 +604,13 @@ static inline int acpi_device_modalias(struct device *dev,return -ENODEV ; } +static inline struct platform_device * +acpi_create_platform_device (struct acpi_device *adev, +struct property_entry *properties) +{ +return NULL ; +} +static inline bool acpi_dma_supported (struct acpi_device *adev) {return false;
include/linux/input.h +1 -0
@@ -529,6 +529,7 @@ int input_ff_event(struct input_dev *dev, unsigned int type, unsigned int code,int input_ff_upload (struct input_dev *dev,struct ff_effect *effect,struct file *file);int input_ff_erase (struct input_dev *dev,int effect_id,struct file *file); +int input_ff_flush (struct input_dev *dev,struct file *file);int input_ff_create_memless (struct input_dev *dev,void *data,int (*play_effect)(struct input_dev *,void *,struct ff_effect *));
mm/hugetlb.c +1 -1
@@ -3659,7 +3659,7 @@ retry:* So we need to block hugepage fault by PG_hwpoison bit check. */ if (unlikely (PageHWPoison (page))) { - ret =VM_FAULT_HWPOISON | + ret =VM_FAULT_HWPOISON_LARGE |VM_FAULT_SET_HINDEX (hstate_index (h)); goto backout_unlocked; }
mm/slub.c +1 -1
@@ -1682,7 +1682,7 @@ static void *get_partial_node(struct kmem_cache *s, struct kmem_cache_node *n, t =acquire_slab (s, n, page, object ==NULL , &objects);if (!t) -break ; +continue ;/* cmpxchg raced */ available += objects;if (!object) {
net/core/skbuff.c +7 -2
@@ -480,13 +480,17 @@ EXPORT_SYMBOL(__netdev_alloc_skb);struct sk_buff *__napi_alloc_skb (struct napi_struct *napi,unsigned int len,gfp_t gfp_mask) { -struct page_frag_cache *nc =this_cpu_ptr (&napi_alloc_cache); +struct page_frag_cache *nc;struct sk_buff *skb;void *data; len +=NET_SKB_PAD +NET_IP_ALIGN ; -if ((len >SKB_WITH_OVERHEAD (PAGE_SIZE )) || +/* If requested length is either too small or too big, +* we use kmalloc() for skb->head allocation. +*/ +if (len <=SKB_WITH_OVERHEAD (1024 ) || + len >SKB_WITH_OVERHEAD (PAGE_SIZE ) || (gfp_mask & (__GFP_DIRECT_RECLAIM |GFP_DMA ))) { skb =__alloc_skb (len, gfp_mask,SKB_ALLOC_RX ,NUMA_NO_NODE );if (!skb)
@@ -494,6 +498,7 @@ struct sk_buff *__napi_alloc_skb(struct napi_struct *napi, unsigned int len, goto skb_success; } + nc =this_cpu_ptr (&napi_alloc_cache); len +=SKB_DATA_ALIGN (sizeof (struct skb_shared_info )); len =SKB_DATA_ALIGN (len);
net/dcb/dcbnl.c +2 -0
@@ -1725,6 +1725,8 @@ static int dcb_doit(struct sk_buff *skb, struct nlmsghdr *nlh) fn = &reply_funcs[dcb->cmd];if (!fn->cb)return -EOPNOTSUPP ; +if (fn->type ==RTM_SETDCB && !netlink_capable (skb,CAP_NET_ADMIN )) +return -EPERM ;if (!tb[DCB_ATTR_IFNAME ])return -EINVAL ;
net/ipv6/sit.c +4 -1
@@ -1584,8 +1584,11 @@ static int ipip6_newlink(struct net *src_net, struct net_device *dev, }#ifdef CONFIG_IPV6_SIT_6RD -if (ipip6_netlink_6rd_parms (data, &ip6rd)) +if (ipip6_netlink_6rd_parms (data, &ip6rd)) { err =ipip6_tunnel_update_6rd (nt, &ip6rd); +if (err <0 ) +unregister_netdevice_queue (dev,NULL ); + }#endif return err;
net/rxrpc/ar-key.c +4 -2
@@ -1116,7 +1116,7 @@ static long rxrpc_read(const struct key *key,default :/* we have a ticket we can't encode */ pr_err ("Unsupported key token type (%u)\n" , token->security_index); -continue ; +return -ENOPKG ; }_debug ("token[%u]: toksize=%u" , ntoks, toksize);
@@ -1236,7 +1236,9 @@ static long rxrpc_read(const struct key *key,break ;default : -break ; +pr_err ("Unsupported key token type (%u)\n" , + token->security_index); +return -ENOPKG ; } ASSERTCMP((unsigned long)xdr - (unsigned long)oldxdr, ==,
net/sunrpc/addr.c +1 -1
@@ -184,7 +184,7 @@ static int rpc_parse_scope_id(struct net *net, const char *buf, scope_id = dev->ifindex;dev_put (dev); }else { -if (kstrtou32 (p,10 , &scope_id) ==0 ) { +if (kstrtou32 (p,10 , &scope_id) !=0 ) {kfree (p);return 0 ; }
security/lsm_audit.c +5 -2
@@ -264,7 +264,9 @@ static void dump_common_audit_data(struct audit_buffer *ab,struct inode *inode;audit_log_format (ab," name=" ); +spin_lock (&a->u.dentry->d_lock);audit_log_untrustedstring (ab, a->u.dentry->d_name.name); +spin_unlock (&a->u.dentry->d_lock); inode =d_backing_inode (a->u.dentry);if (inode) {
@@ -282,8 +284,9 @@ static void dump_common_audit_data(struct audit_buffer *ab, dentry =d_find_alias (inode);if (dentry) {audit_log_format (ab," name=" ); -audit_log_untrustedstring (ab, - dentry->d_name.name); +spin_lock (&dentry->d_lock); +audit_log_untrustedstring (ab, dentry->d_name.name); +spin_unlock (&dentry->d_lock);dput (dentry); }audit_log_format (ab," dev=" );
sound/soc/soc-dapm.c +1 -0
@@ -2316,6 +2316,7 @@ void snd_soc_dapm_free_widget(struct snd_soc_dapm_widget *w)enum snd_soc_dapm_direction dir;list_del (&w->list); +list_del (&w->dirty);/* * remove source and sink paths associated to this widget. * While removing the path, remove reference to it from both