Linux 4.9.246
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.9.246 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/arm/boot/dts/imx50-evk.dts | 2 arch/arm/boot/dts/imx6qdl-udoo.dtsi | 2 arch/arm64/kernel/psci.c | 5 - arch/mips/alchemy/common/clock.c | 9 +++ arch/mips/mm/tlb-r4k.c | 1 arch/powerpc/include/asm/book3s/64/kup-radix.h | 1 arch/s390/kernel/perf_cpum_sf.c | 2 arch/x86/kernel/cpu/microcode/intel.c | 48 ------------------ arch/xtensa/mm/cache.c | 14 +++++ drivers/atm/nicstar.c | 2 drivers/iio/accel/kxcjk-1013.c | 15 +++-- drivers/input/misc/adxl34x.c | 2 drivers/net/can/dev.c | 2 drivers/net/can/m_can/m_can.c | 4 - drivers/net/can/usb/peak_usb/pcan_usb_core.c | 4 - drivers/net/ethernet/broadcom/b44.c | 3 - drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 2 drivers/net/ethernet/faraday/ftgmac100.c | 4 + drivers/net/ethernet/mellanox/mlx4/fw.c | 6 +- drivers/net/ethernet/mellanox/mlx4/fw.h | 4 - drivers/net/ethernet/mellanox/mlxsw/core.c | 2 drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c | 3 - drivers/net/usb/qmi_wwan.c | 2 drivers/pinctrl/pinctrl-rockchip.c | 2 drivers/regulator/core.c | 29 ++++------ drivers/regulator/ti-abb-regulator.c | 12 ++++ drivers/tty/serial/imx.c | 20 +------ fs/efivarfs/super.c | 1 fs/ext4/ext4.h | 3 - fs/libfs.c | 6 +- fs/super.c | 33 +----------- fs/xfs/libxfs/xfs_rmap_btree.c | 16 +++--- net/bridge/br_device.c | 1 net/core/devlink.c | 6 +- net/core/netpoll.c | 22 ++++++-- net/ipv4/inet_diag.c | 4 + net/ipv4/tcp_bbr.c | 2 net/ipv6/ah6.c | 3 - net/mac80211/rc80211_minstrel.c | 27 +--------- net/mac80211/rc80211_minstrel.h | 1 net/mac80211/sta_info.c | 14 +---- net/netlabel/netlabel_unlabeled.c | 17 ++++-- net/sctp/input.c | 4 - net/sctp/sm_sideeffect.c | 4 - net/sctp/transport.c | 2 net/x25/af_x25.c | 1 sound/core/control.c | 2 sound/pci/mixart/mixart_core.c | 5 - tools/perf/builtin-lock.c | 2 50 files changed, 173 insertions(+), 207 deletions(-)
Alejandro Concepcion Rodriguez (1):
can: dev: can_restart(): post buffer from the right context
Aya Levin (1):
net/mlx4_core: Fix init_hca fields offset
Chen Yu (1):
x86/microcode/intel: Check patch signature before saving microcode for early loading
Colin Ian King (1):
can: peak_usb: fix potential integer overflow on shift of a int
Dan Carpenter (1):
Input: adxl34x - clean up a data type in adxl34x_probe()
Daniel Axtens (1):
powerpc/uaccess-flush: fix missing includes in kup-radix.h
Darrick J. Wong (2):
vfs: remove lockdep bogosity in __sb_start_write
xfs: revert "xfs: fix rmap key and record comparison functions"
Edwin Peer (1):
bnxt_en: read EEPROM A2h address using page 0
Fabio Estevam (1):
ARM: dts: imx50-evk: Fix the chip select 1 IOMUX
Felix Fietkau (2):
mac80211: minstrel: remove deferred sampling code
mac80211: minstrel: fix tx status processing corner case
Filip Moc (1):
net: usb: qmi_wwan: Set DTR quirk for MR400
Florian Fainelli (1):
net: Have netpoll bring-up DSA management interface
Fugang Duan (1):
tty: serial: imx: keep console clocks always on
Greg Kroah-Hartman (1):
Linux 4.9.246
Hans de Goede (1):
iio: accel: kxcjk1013: Replace is_smo8500_device with an acpi_type enum
Heiner Kallweit (1):
net: bridge: add missing counters to ndo_get_stats64 callback
Ido Schimmel (1):
mlxsw: core: Use variable timeout for EMAD retries
Jan Kara (1):
ext4: fix bogus warning in ext4_update_dx_flag()
Jianqun Xu (1):
pinctrl: rockchip: enable gpio pclk for rockchip_gpio_to_irq
Joel Stanley (1):
net: ftgmac100: Fix crash when removing driver
Johannes Berg (1):
mac80211: free sta in sta_info_insert_finish() on errors
Leo Yan (1):
perf lock: Don't free "lock_seq_stat" if read_count isn't zero
Max Filippov (1):
xtensa: disable preemption around cache alias management calls
Michał Mirosław (1):
regulator: fix memory leak with repeated set_machine_constraints()
Nishanth Menon (1):
regulator: ti-abb: Fix array out of bound read access on the first transition
Paul Moore (2):
netlabel: fix our progress tracking in netlbl_unlabel_staticlist()
netlabel: fix an uninitialized warning in netlbl_unlabel_staticlist()
Randy Dunlap (1):
MIPS: export has_transparent_hugepage() for modules
Ryan Sharpelletti (1):
tcp: only postpone PROBE_RTT if RTT is < current min_rtt estimate
Sebastian Andrzej Siewior (1):
atm: nicstar: Unmap DMA on send error
Sergey Matyukevich (1):
arm: dts: imx6qdl-udoo: fix rgmii phy-mode for ksz9031 phy
Takashi Iwai (1):
ALSA: mixart: Fix mutex deadlock
Takashi Sakamoto (1):
ALSA: ctl: fix error path at adding user-defined element set
Thomas Richter (1):
s390/cpum_sf.c: fix file permission for cpum_sfb_size
Vamshi K Sthambamkadi (1):
efivarfs: fix memory leak in efivarfs_create()
Wang Hai (2):
devlink: Add missing genlmsg_cancel() in devlink_nl_sb_port_pool_fill()
inet_diag: Fix error path to cancel the meseage in inet_req_diag_fill()
Will Deacon (1):
arm64: psci: Avoid printing in cpu_psci_cpu_die()
Wu Bo (1):
can: m_can: m_can_handle_state_change(): fix state change
Xie He (1):
net: x25: Increase refcnt of "struct x25_neigh" in x25_rx_call_request
Xin Long (1):
sctp: change to hold/put transport for proto_unreach_timer
Yicong Yang (1):
libfs: fix error cast of negative value in simple_attr_write()
Zhang Changzhong (3):
ah6: fix error return code in ah6_input()
net: b44: fix error return code in b44_init_one()
qlcnic: fix error return code in qlcnic_83xx_restart_hw()
Zhang Qilong (1):
MIPS: Alchemy: Fix memleak in alchemy_clk_setup_cpu
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,6 +1,6 @@ VERSION = 4 PATCHLEVEL = 9 -SUBLEVEL = 245 +SUBLEVEL = 246 EXTRAVERSION = NAME = Roaring Lionus
arch/arm/boot/dts/imx50-evk.dts +1 -1
@@ -66,7 +66,7 @@ MX50_PAD_CSPI_MISO__CSPI_MISO 0x00 MX50_PAD_CSPI_MOSI__CSPI_MOSI 0x00 MX50_PAD_CSPI_SS0__GPIO4_11 0xc4 - MX50_PAD_ECSPI1_MOSI__CSPI_SS1 0xf4 + MX50_PAD_ECSPI1_MOSI__GPIO4_13 0x84 >; };
arch/arm/boot/dts/imx6qdl-udoo.dtsi +1 -1
@@ -94,7 +94,7 @@ &fec { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_enet>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; status = "okay"; };
arch/arm64/kernel/psci.c +1 -4
@@ -68,7 +68,6 @@ static int cpu_psci_cpu_disable(unsigned int cpu)static void cpu_psci_cpu_die (unsigned int cpu) { -int ret;/* * There are no known implementations of PSCI actually using the * power state field, pass a sensible default for now.
@@ -76,9 +75,7 @@ static void cpu_psci_cpu_die(unsigned int cpu)u32 state =PSCI_POWER_STATE_TYPE_POWER_DOWN <<PSCI_0_2_POWER_STATE_TYPE_SHIFT ; - ret = psci_ops.cpu_off (state); - -pr_crit ("unable to power off CPU%u (%d)\n" , cpu, ret); + psci_ops.cpu_off (state); }static int cpu_psci_cpu_kill (unsigned int cpu)
arch/mips/alchemy/common/clock.c +8 -1
@@ -151,6 +151,7 @@ static struct clk __init *alchemy_clk_setup_cpu(const char *parent_name, {struct clk_init_data id;struct clk_hw *h; +struct clk *clk; h =kzalloc (sizeof (*h),GFP_KERNEL );if (!h)
@@ -163,7 +164,13 @@ static struct clk __init *alchemy_clk_setup_cpu(const char *parent_name, id.ops = &alchemy_clkops_cpu; h->init = &id; -return clk_register (NULL , h); + clk =clk_register (NULL , h); +if (IS_ERR (clk)) { +pr_err ("failed to register clock\n" ); +kfree (h); + } + +return clk; }/* AUXPLLs ************************************************************/
arch/mips/mm/tlb-r4k.c +1 -0
@@ -424,6 +424,7 @@ int has_transparent_hugepage(void) }return mask ==PM_HUGE_MASK ; } +EXPORT_SYMBOL (has_transparent_hugepage);#endif /* CONFIG_TRANSPARENT_HUGEPAGE */
arch/powerpc/include/asm/book3s/64/kup-radix.h +1 -0
@@ -1,6 +1,7 @@/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _ASM_POWERPC_BOOK3S_64_KUP_RADIX_H#define _ASM_POWERPC_BOOK3S_64_KUP_RADIX_H +#include <linux/jump_label.h> DECLARE_STATIC_KEY_FALSE (uaccess_flush_key);
arch/s390/kernel/perf_cpum_sf.c +1 -1
@@ -1663,4 +1663,4 @@ static int __init init_cpum_sampling_pmu(void)return err; }arch_initcall (init_cpum_sampling_pmu); -core_param (cpum_sfb_size,CPUM_SF_MAX_SDB , sfb_size,0640 ); +core_param (cpum_sfb_size,CPUM_SF_MAX_SDB , sfb_size,0644 );
arch/x86/kernel/cpu/microcode/intel.c +2 -46
60 lines not on this page · raw message
arch/xtensa/mm/cache.c +14 -0
@@ -74,8 +74,10 @@ static inline void kmap_invalidate_coherent(struct page *page, kvaddr =TLBTEMP_BASE_1 + (page_to_phys (page) &DCACHE_ALIAS_MASK ); +preempt_disable ();__invalidate_dcache_page_alias (kvaddr,page_to_phys (page)); +preempt_enable (); } } }
@@ -160,6 +162,7 @@ void flush_dcache_page(struct page *page)if (!alias && !mapping)return ; +preempt_disable (); virt =TLBTEMP_BASE_1 + (phys &DCACHE_ALIAS_MASK );__flush_invalidate_dcache_page_alias (virt, phys);
@@ -170,6 +173,7 @@ void flush_dcache_page(struct page *page)if (mapping)__invalidate_icache_page_alias (virt, phys); +preempt_enable (); }/* There shouldn't be an entry in the cache for this page anymore. */
@@ -203,8 +207,10 @@ void local_flush_cache_page(struct vm_area_struct *vma, unsigned long address,unsigned long phys =page_to_phys (pfn_to_page (pfn));unsigned long virt =TLBTEMP_BASE_1 + (address &DCACHE_ALIAS_MASK ); +preempt_disable ();__flush_invalidate_dcache_page_alias (virt, phys);__invalidate_icache_page_alias (virt, phys); +preempt_enable (); }EXPORT_SYMBOL (local_flush_cache_page);
@@ -231,11 +237,13 @@ update_mmu_cache(struct vm_area_struct * vma, unsigned long addr, pte_t *ptep)unsigned long phys =page_to_phys (page);unsigned long tmp; +preempt_disable (); tmp =TLBTEMP_BASE_1 + (phys &DCACHE_ALIAS_MASK );__flush_invalidate_dcache_page_alias (tmp, phys); tmp =TLBTEMP_BASE_1 + (addr &DCACHE_ALIAS_MASK );__flush_invalidate_dcache_page_alias (tmp, phys);__invalidate_icache_page_alias (tmp, phys); +preempt_enable ();clear_bit (PG_arch_1, &page->flags); }
@@ -269,7 +277,9 @@ void copy_to_user_page(struct vm_area_struct *vma, struct page *page,if (alias) {unsigned long t =TLBTEMP_BASE_1 + (vaddr &DCACHE_ALIAS_MASK ); +preempt_disable ();__flush_invalidate_dcache_page_alias (t, phys); +preempt_enable (); }/* Copy data */
@@ -284,9 +294,11 @@ void copy_to_user_page(struct vm_area_struct *vma, struct page *page,if (alias) {unsigned long t =TLBTEMP_BASE_1 + (vaddr &DCACHE_ALIAS_MASK ); +preempt_disable ();__flush_invalidate_dcache_range ((unsigned long ) dst, len);if ((vma->vm_flags &VM_EXEC ) !=0 )__invalidate_icache_page_alias (t, phys); +preempt_enable (); }else if ((vma->vm_flags &VM_EXEC ) !=0 ) {__flush_dcache_range ((unsigned long )dst,len);
@@ -308,7 +320,9 @@ extern void copy_from_user_page(struct vm_area_struct *vma, struct page *page,if (alias) {unsigned long t =TLBTEMP_BASE_1 + (vaddr &DCACHE_ALIAS_MASK ); +preempt_disable ();__flush_invalidate_dcache_page_alias (t, phys); +preempt_enable (); }memcpy (dst, src, len);
drivers/atm/nicstar.c +2 -0
@@ -1707,6 +1707,8 @@ static int ns_send(struct atm_vcc *vcc, struct sk_buff *skb)if (push_scqe (card, vc, scq, &scqe, skb) !=0 ) {atomic_inc (&vcc->stats->tx_err); +dma_unmap_single (&card->pcidev->dev,NS_PRV_DMA (skb), skb->len, +DMA_TO_DEVICE );dev_kfree_skb_any (skb);return -EIO ; }
drivers/iio/accel/kxcjk-1013.c +10 -5
@@ -91,6 +91,11 @@ enum kx_chipset {KX_MAX_CHIPS /* this must be last */ }; +enum kx_acpi_type { +ACPI_GENERIC , +ACPI_SMO8500 , +}; +struct kxcjk1013_data {struct i2c_client *client;struct iio_trigger *dready_trig;
@@ -107,7 +112,7 @@ struct kxcjk1013_data {bool motion_trigger_on;int64_t timestamp;enum kx_chipset chipset; -bool is_smo8500_device; +enum kx_acpi_type acpi_type; };enum kxcjk1013_axis {
@@ -1144,7 +1149,7 @@ static irqreturn_t kxcjk1013_data_rdy_trig_poll(int irq, void *private)static const char *kxcjk1013_match_acpi_device (struct device *dev,enum kx_chipset *chipset, -bool *is_smo8500_device) +enum kx_acpi_type *acpi_type) {const struct acpi_device_id *id;
@@ -1153,7 +1158,7 @@ static const char *kxcjk1013_match_acpi_device(struct device *dev,return NULL ;if (strcmp (id->id,"SMO8500" ) ==0 ) - *is_smo8500_device = true; + *acpi_type =ACPI_SMO8500 ; *chipset = (enum kx_chipset )id->driver_data;
@@ -1189,7 +1194,7 @@ static int kxcjk1013_probe(struct i2c_client *client, }else if (ACPI_HANDLE (&client->dev)) { name =kxcjk1013_match_acpi_device (&client->dev, &data->chipset, - &data->is_smo8500_device); + &data->acpi_type); }else return -ENODEV ;
@@ -1207,7 +1212,7 @@ static int kxcjk1013_probe(struct i2c_client *client, indio_dev->modes =INDIO_DIRECT_MODE ; indio_dev->info = &kxcjk1013_info; -if (client->irq >0 && !data->is_smo8500_device) { +if (client->irq >0 && data->acpi_type !=ACPI_SMO8500 ) { ret = devm_request_threaded_irq(&client->dev, client->irq, kxcjk1013_data_rdy_trig_poll, kxcjk1013_event_handler,
drivers/input/misc/adxl34x.c +1 -1
@@ -696,7 +696,7 @@ struct adxl34x *adxl34x_probe(struct device *dev, int irq,struct input_dev *input_dev;const struct adxl34x_platform_data *pdata;int err, range, i; -unsigned char revid; +int revid;if (!irq) {dev_err (dev,"no IRQ?\n" );
drivers/net/can/dev.c +1 -1
@@ -555,7 +555,7 @@ static void can_restart(struct net_device *dev) } cf->can_id |=CAN_ERR_RESTARTED ; -netif_rx (skb); +netif_rx_ni (skb); stats->rx_packets++; stats->rx_bytes += cf->can_dlc;
drivers/net/can/m_can/m_can.c +2 -2
@@ -572,7 +572,7 @@ static int m_can_handle_state_change(struct net_device *dev,unsigned int ecr;switch (new_state) { -case CAN_STATE_ERROR_ACTIVE : +case CAN_STATE_ERROR_WARNING :/* error warning state */ priv->can.can_stats.error_warning++; priv->can.state =CAN_STATE_ERROR_WARNING ;
@@ -601,7 +601,7 @@ static int m_can_handle_state_change(struct net_device *dev,__m_can_get_berr_counter (dev, &bec);switch (new_state) { -case CAN_STATE_ERROR_ACTIVE : +case CAN_STATE_ERROR_WARNING :/* error warning state */ cf->can_id |=CAN_ERR_CRTL ; cf->data[1] = (bec.txerr > bec.rxerr) ?
drivers/net/can/usb/peak_usb/pcan_usb_core.c +2 -2
@@ -178,7 +178,7 @@ void peak_usb_get_ts_tv(struct peak_time_ref *time_ref, u32 ts,if (time_ref->ts_dev_1 < time_ref->ts_dev_2) {/* case when event time (tsw) wraps */ if (ts < time_ref->ts_dev_1) - delta_ts =1 << time_ref->adapter->ts_used_bits; + delta_ts =BIT_ULL (time_ref->adapter->ts_used_bits);/* Otherwise, sync time counter (ts_dev_2) has wrapped: * handle case when event time (tsn) hasn't.
@@ -190,7 +190,7 @@ void peak_usb_get_ts_tv(struct peak_time_ref *time_ref, u32 ts,* tsn ts */ }else if (time_ref->ts_dev_1 < ts) { - delta_ts = -(1 << time_ref->adapter->ts_used_bits); + delta_ts = -BIT_ULL (time_ref->adapter->ts_used_bits); }/* add delay between last sync and event timestamps */
drivers/net/ethernet/broadcom/b44.c +2 -1
@@ -2390,7 +2390,8 @@ static int b44_init_one(struct ssb_device *sdev, goto err_out_free_dev; } -if (dma_set_mask_and_coherent (sdev->dma_dev,DMA_BIT_MASK (30 ))) { + err =dma_set_mask_and_coherent (sdev->dma_dev,DMA_BIT_MASK (30 )); +if (err) {dev_err (sdev->dev,"Required 30BIT DMA mask unsupported by the system\n" ); goto err_out_powerdown;
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c +1 -1
@@ -1862,7 +1862,7 @@ static int bnxt_get_module_eeprom(struct net_device *dev,/* Read A2 portion of the EEPROM */ if (length) { start -=ETH_MODULE_SFF_8436_LEN ; - rc =bnxt_read_sfp_module_eeprom_info (bp,I2C_DEV_ADDR_A2 ,1 , + rc =bnxt_read_sfp_module_eeprom_info (bp,I2C_DEV_ADDR_A2 ,0 , start, length, data); }return rc;
drivers/net/ethernet/faraday/ftgmac100.c +4 -0
@@ -1444,6 +1444,8 @@ static int ftgmac100_probe(struct platform_device *pdev)return 0 ; err_ncsi_dev: +if (priv->ndev) +ncsi_unregister_dev (priv->ndev); err_register_netdev:ftgmac100_destroy_mdio (netdev); err_setup_mdio:
@@ -1465,6 +1467,8 @@ static int __exit ftgmac100_remove(struct platform_device *pdev) netdev =platform_get_drvdata (pdev); priv =netdev_priv (netdev); +if (priv->ndev) +ncsi_unregister_dev (priv->ndev);unregister_netdev (netdev);ftgmac100_destroy_mdio (netdev);
drivers/net/ethernet/mellanox/mlx4/fw.c +3 -3
@@ -1843,14 +1843,14 @@ int mlx4_INIT_HCA(struct mlx4_dev *dev, struct mlx4_init_hca_param *param)#define INIT_HCA_LOG_RD_OFFSET (INIT_HCA_QPC_OFFSET + 0x77)#define INIT_HCA_MCAST_OFFSET 0x0c0#define INIT_HCA_MC_BASE_OFFSET (INIT_HCA_MCAST_OFFSET + 0x00) -#define INIT_HCA_LOG_MC_ENTRY_SZ_OFFSET (INIT_HCA_MCAST_OFFSET + 0x12) -#define INIT_HCA_LOG_MC_HASH_SZ_OFFSET (INIT_HCA_MCAST_OFFSET + 0x16) +#define INIT_HCA_LOG_MC_ENTRY_SZ_OFFSET (INIT_HCA_MCAST_OFFSET + 0x13) +#define INIT_HCA_LOG_MC_HASH_SZ_OFFSET (INIT_HCA_MCAST_OFFSET + 0x17)#define INIT_HCA_UC_STEERING_OFFSET (INIT_HCA_MCAST_OFFSET + 0x18)#define INIT_HCA_LOG_MC_TABLE_SZ_OFFSET (INIT_HCA_MCAST_OFFSET + 0x1b)#define INIT_HCA_DEVICE_MANAGED_FLOW_STEERING_EN 0x6#define INIT_HCA_FS_PARAM_OFFSET 0x1d0#define INIT_HCA_FS_BASE_OFFSET (INIT_HCA_FS_PARAM_OFFSET + 0x00) -#define INIT_HCA_FS_LOG_ENTRY_SZ_OFFSET (INIT_HCA_FS_PARAM_OFFSET + 0x12) +#define INIT_HCA_FS_LOG_ENTRY_SZ_OFFSET (INIT_HCA_FS_PARAM_OFFSET + 0x13)#define INIT_HCA_FS_A0_OFFSET (INIT_HCA_FS_PARAM_OFFSET + 0x18)#define INIT_HCA_FS_LOG_TABLE_SZ_OFFSET (INIT_HCA_FS_PARAM_OFFSET + 0x1b)#define INIT_HCA_FS_ETH_BITS_OFFSET (INIT_HCA_FS_PARAM_OFFSET + 0x21)
drivers/net/ethernet/mellanox/mlx4/fw.h +2 -2
@@ -184,8 +184,8 @@ struct mlx4_init_hca_param {u64 cmpt_base;u64 mtt_base;u64 global_caps; -u16 log_mc_entry_sz; -u16 log_mc_hash_sz; +u8 log_mc_entry_sz; +u8 log_mc_hash_sz;u16 hca_core_clock;/* Internal Clock Frequency (in MHz) */ u8 log_num_qps;u8 log_num_srqs;
drivers/net/ethernet/mellanox/mlxsw/core.c +1 -1
@@ -436,7 +436,7 @@ static void mlxsw_emad_trans_timeout_schedule(struct mlxsw_reg_trans *trans) {unsigned long timeout =msecs_to_jiffies (MLXSW_EMAD_TIMEOUT_MS ); -mlxsw_core_schedule_dw (&trans->timeout_dw, timeout); +mlxsw_core_schedule_dw (&trans->timeout_dw, timeout << trans->retries); } static int mlxsw_emad_transmit(struct mlxsw_core *mlxsw_core,
drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c +2 -1
@@ -2251,7 +2251,8 @@ static int qlcnic_83xx_restart_hw(struct qlcnic_adapter *adapter)/* Boot either flash image or firmware image from host file system */ if (qlcnic_load_fw_file ==1 ) { -if (qlcnic_83xx_load_fw_image_from_host (adapter)) + err =qlcnic_83xx_load_fw_image_from_host (adapter); +if (err)return err; }else { QLC_SHARED_REG_WR32(adapter, QLCNIC_FW_IMG_VALID,
drivers/net/usb/qmi_wwan.c +1 -1
@@ -705,7 +705,7 @@ static const struct usb_device_id products[] = { {QMI_FIXED_INTF(0x05c6, 0x9011, 4)}, {QMI_FIXED_INTF(0x05c6, 0x9021, 1)}, {QMI_FIXED_INTF(0x05c6, 0x9022, 2)}, - {QMI_FIXED_INTF(0x05c6, 0x9025, 4)}, /* Alcatel-sbell ASB TL131 TDD LTE (China Mobile) */ + {QMI_QUIRK_SET_DTR(0x05c6, 0x9025, 4)}, /* Alcatel-sbell ASB TL131 TDD LTE (China Mobile) */ {QMI_FIXED_INTF(0x05c6, 0x9026, 3)}, {QMI_FIXED_INTF(0x05c6, 0x902e, 5)}, {QMI_FIXED_INTF(0x05c6, 0x9031, 5)},
drivers/pinctrl/pinctrl-rockchip.c +2 -0
@@ -1815,7 +1815,9 @@ static int rockchip_gpio_to_irq(struct gpio_chip *gc, unsigned offset)if (!bank->domain)return -ENXIO ; +clk_enable (bank->clk); virq =irq_create_mapping (bank->domain, offset); +clk_disable (bank->clk);return (virq) ? : -ENXIO ; }
drivers/regulator/core.c +13 -16
@@ -1025,7 +1025,6 @@ static int _regulator_do_enable(struct regulator_dev *rdev);/** * set_machine_constraints - sets regulator constraints * @rdev: regulator source -* @constraints: constraints to apply * * Allows platform initialisation code to define and constrain * regulator circuits e.g. valid voltage/current ranges, etc. NOTE:
@@ -1033,21 +1032,11 @@ static int _regulator_do_enable(struct regulator_dev *rdev);* regulator operations to proceed i.e. set_voltage, set_current_limit, * set_mode. */ -static int set_machine_constraints (struct regulator_dev *rdev, -const struct regulation_constraints *constraints) +static int set_machine_constraints (struct regulator_dev *rdev) {int ret =0 ;const struct regulator_ops *ops = rdev->desc->ops; -if (constraints) - rdev->constraints =kmemdup (constraints,sizeof (*constraints), -GFP_KERNEL ); -else - rdev->constraints =kzalloc (sizeof (*constraints), -GFP_KERNEL ); -if (!rdev->constraints) -return -ENOMEM ; - ret =machine_constraints_voltage (rdev, rdev->constraints);if (ret !=0 )return ret;
@@ -3924,7 +3913,6 @@ struct regulator_dev * regulator_register(const struct regulator_desc *regulator_desc, const struct regulator_config *cfg) { - const struct regulation_constraints *constraints = NULL; const struct regulator_init_data *init_data;struct regulator_config *config =NULL ;static atomic_t regulator_no =ATOMIC_INIT (-1 );
@@ -4024,14 +4012,23 @@ regulator_register(const struct regulator_desc *regulator_desc,/* set regulator constraints */ if (init_data) - constraints = &init_data->constraints; + rdev->constraints =kmemdup (&init_data->constraints, +sizeof (*rdev->constraints), +GFP_KERNEL ); +else + rdev->constraints =kzalloc (sizeof (*rdev->constraints), +GFP_KERNEL ); +if (!rdev->constraints) { + ret = -ENOMEM ; + goto wash; + }if (init_data && init_data->supply_regulator) rdev->supply_name = init_data->supply_regulator;else if (regulator_desc->supply_name) rdev->supply_name = regulator_desc->supply_name; - ret =set_machine_constraints (rdev, constraints); + ret =set_machine_constraints (rdev);if (ret == -EPROBE_DEFER ) {/* Regulator might be in bypass mode and so needs its supply * to set the constraints */
@@ -4040,7 +4037,7 @@ regulator_register(const struct regulator_desc *regulator_desc,* that is just being created */ ret =regulator_resolve_supply (rdev);if (!ret) - ret =set_machine_constraints (rdev, constraints); + ret =set_machine_constraints (rdev);else rdev_dbg (rdev,"unable to resolve supply early: %pe\n" ,ERR_PTR (ret));
drivers/regulator/ti-abb-regulator.c +11 -1
@@ -342,8 +342,17 @@ static int ti_abb_set_voltage_sel(struct regulator_dev *rdev, unsigned sel)return ret; } -/* If data is exactly the same, then just update index, no change */ info = &abb->info[sel]; +/* +* When Linux kernel is starting up, we are'nt sure of the +* Bias configuration that bootloader has configured. +* So, we get to know the actual setting the first time +* we are asked to transition. +*/ +if (abb->current_info_idx == -EINVAL ) + goto just_set_abb; + +/* If data is exactly the same, then just update index, no change */ oinfo = &abb->info[abb->current_info_idx];if (!memcmp (info, oinfo,sizeof (*info))) { dev_dbg(dev, "%s: Same data new idx=%d, old idx=%d\n", __func__,
@@ -351,6 +360,7 @@ static int ti_abb_set_voltage_sel(struct regulator_dev *rdev, unsigned sel) goto out; } +just_set_abb: ret =ti_abb_set_opp (rdev, abb, info); out:
drivers/tty/serial/imx.c +3 -17
@@ -1787,16 +1787,6 @@ imx_console_write(struct console *co, const char *s, unsigned int count)unsigned int ucr1;unsigned long flags =0 ;int locked =1 ; -int retval; - - retval =clk_enable (sport->clk_per); -if (retval) -return ; - retval =clk_enable (sport->clk_ipg); -if (retval) { -clk_disable (sport->clk_per); -return ; - }if (sport->port.sysrq) locked =0 ;
@@ -1832,9 +1822,6 @@ imx_console_write(struct console *co, const char *s, unsigned int count)if (locked)spin_unlock_irqrestore (&sport->port.lock, flags); - -clk_disable (sport->clk_ipg); -clk_disable (sport->clk_per); }/*
@@ -1935,15 +1922,14 @@ imx_console_setup(struct console *co, char *options) retval =uart_set_options (&sport->port, co, baud, parity, bits, flow); -clk_disable (sport->clk_ipg);if (retval) { -clk_unprepare (sport->clk_ipg); +clk_disable_unprepare (sport->clk_ipg); goto error_console; } - retval =clk_prepare (sport->clk_per); + retval =clk_prepare_enable (sport->clk_per);if (retval) -clk_unprepare (sport->clk_ipg); +clk_disable_unprepare (sport->clk_ipg); error_console:return retval;
fs/efivarfs/super.c +1 -0
@@ -23,6 +23,7 @@ LIST_HEAD(efivarfs_list);static void efivarfs_evict_inode (struct inode *inode) {clear_inode (inode); +kfree (inode->i_private); }static const struct super_operations efivarfs_ops = {
fs/ext4/ext4.h +2 -1
@@ -2395,7 +2395,8 @@ int ext4_insert_dentry(struct inode *dir, struct ext4_filename *fname);static inline void ext4_update_dx_flag (struct inode *inode) { -if (!ext4_has_feature_dir_index (inode->i_sb)) { +if (!ext4_has_feature_dir_index (inode->i_sb) && +ext4_test_inode_flag (inode,EXT4_INODE_INDEX )) {/* ext4_iget() should have caught this... */ WARN_ON_ONCE (ext4_has_feature_metadata_csum (inode->i_sb));ext4_clear_inode_flag (inode,EXT4_INODE_INDEX );
fs/libfs.c +4 -2
@@ -865,7 +865,7 @@ ssize_t simple_attr_write(struct file *file, const char __user *buf, size_t len, loff_t *ppos) { struct simple_attr *attr; -u64 val; +unsigned long long val;size_t size;ssize_t ret;
@@ -883,7 +883,9 @@ ssize_t simple_attr_write(struct file *file, const char __user *buf, goto out; attr->set_buf[size] ='\0' ; - val =simple_strtoll (attr->set_buf,NULL ,0 ); + ret =kstrtoull (attr->set_buf,0 , &val); +if (ret) + goto out; ret = attr->set (attr->data, val);if (ret ==0 ) ret = len;/* on success, claim we got the whole input */
fs/super.c +4 -29
@@ -1254,36 +1254,11 @@ EXPORT_SYMBOL(__sb_end_write);*/ int __sb_start_write (struct super_block *sb,int level,bool wait) { -bool force_trylock = false; -int ret =1 ; +if (!wait) +return percpu_down_read_trylock (sb->s_writers.rw_sem + level-1 ); -#ifdef CONFIG_LOCKDEP -/* -* We want lockdep to tell us about possible deadlocks with freezing -* but it's it bit tricky to properly instrument it. Getting a freeze -* protection works as getting a read lock but there are subtle -* problems. XFS for example gets freeze protection on internal level -* twice in some cases, which is OK only because we already hold a -* freeze protection also on higher level. Due to these cases we have -* to use wait == F (trylock mode) which must not fail. -*/ -if (wait) { -int i; - -for (i =0 ; i < level -1 ; i++) -if (percpu_rwsem_is_held (sb->s_writers.rw_sem + i)) { - force_trylock = true; -break ; - } - } -#endif -if (wait && !force_trylock) -percpu_down_read (sb->s_writers.rw_sem + level-1 ); -else - ret =percpu_down_read_trylock (sb->s_writers.rw_sem + level-1 ); - -WARN_ON (force_trylock && !ret); -return ret; +percpu_down_read (sb->s_writers.rw_sem + level-1 ); +return 1 ; }EXPORT_SYMBOL (__sb_start_write);
fs/xfs/libxfs/xfs_rmap_btree.c +8 -8
@@ -262,8 +262,8 @@ xfs_rmapbt_key_diff(else if (y > x)return -1 ; - x =be64_to_cpu (kp->rm_offset); - y =xfs_rmap_irec_offset_pack (rec); + x =XFS_RMAP_OFF (be64_to_cpu (kp->rm_offset)); + y = rec->rm_offset;if (x > y)return 1 ;else if (y > x)
@@ -294,8 +294,8 @@ xfs_rmapbt_diff_two_keys(else if (y > x)return -1 ; - x =be64_to_cpu (kp1->rm_offset); - y =be64_to_cpu (kp2->rm_offset); + x =XFS_RMAP_OFF (be64_to_cpu (kp1->rm_offset)); + y =XFS_RMAP_OFF (be64_to_cpu (kp2->rm_offset));if (x > y)return 1 ;else if (y > x)
@@ -401,8 +401,8 @@ xfs_rmapbt_keys_inorder(return 1 ; else if (a > b) return 0; - a =be64_to_cpu (k1->rmap.rm_offset); - b =be64_to_cpu (k2->rmap.rm_offset); + a =XFS_RMAP_OFF (be64_to_cpu (k1->rmap.rm_offset)); + b =XFS_RMAP_OFF (be64_to_cpu (k2->rmap.rm_offset));if (a <= b)return 1 ;return 0 ;
@@ -431,8 +431,8 @@ xfs_rmapbt_recs_inorder(return 1 ; else if (a > b) return 0; - a =be64_to_cpu (r1->rmap.rm_offset); - b =be64_to_cpu (r2->rmap.rm_offset); + a =XFS_RMAP_OFF (be64_to_cpu (r1->rmap.rm_offset)); + b =XFS_RMAP_OFF (be64_to_cpu (r2->rmap.rm_offset));if (a <= b)return 1 ;return 0 ;
net/bridge/br_device.c +1 -0
@@ -177,6 +177,7 @@ static struct rtnl_link_stats64 *br_get_stats64(struct net_device *dev, sum.rx_packets += tmp.rx_packets; } +netdev_stats_to_stats64 (stats, &dev->stats); stats->tx_bytes = sum.tx_bytes; stats->tx_packets = sum.tx_packets; stats->rx_bytes = sum.rx_bytes;
net/core/devlink.c +4 -2
@@ -986,7 +986,7 @@ static int devlink_nl_sb_port_pool_fill(struct sk_buff *msg, err = ops->sb_occ_port_pool_get (devlink_port, devlink_sb->index, pool_index, &cur, &max);if (err && err != -EOPNOTSUPP ) -return err; + goto sb_occ_get_failure;if (!err) {if (nla_put_u32 (msg,DEVLINK_ATTR_SB_OCC_CUR , cur)) goto nla_put_failure;
@@ -999,8 +999,10 @@ static int devlink_nl_sb_port_pool_fill(struct sk_buff *msg,return 0 ; nla_put_failure: + err = -EMSGSIZE ; +sb_occ_get_failure:genlmsg_cancel (msg, hdr); -return -EMSGSIZE ; +return err; } static int devlink_nl_cmd_sb_port_pool_get_doit(struct sk_buff *skb,
net/core/netpoll.c +18 -4
@@ -28,6 +28,7 @@#include <linux/slab.h> #include <linux/export.h> #include <linux/if_vlan.h> +#include <net/dsa.h> #include <net/tcp.h> #include <net/udp.h> #include <net/addrconf.h>
@@ -661,15 +662,15 @@ EXPORT_SYMBOL_GPL(__netpoll_setup);int netpoll_setup (struct netpoll *np) { -struct net_device *ndev =NULL ; +struct net_device *ndev =NULL , *dev =NULL ; +struct net *net = current->nsproxy->net_ns;struct in_device *in_dev;int err;rtnl_lock (); -if (np->dev_name[0 ]) { -struct net *net = current->nsproxy->net_ns; +if (np->dev_name[0 ]) ndev =__dev_get_by_name (net, np->dev_name); - } +if (!ndev) {np_err (np,"%s doesn't exist, aborting\n" , np->dev_name); err = -ENODEV ;
@@ -677,6 +678,19 @@ int netpoll_setup(struct netpoll *np) }dev_hold (ndev); +/* bring up DSA management network devices up first */ +for_each_netdev (net, dev) { +if (!netdev_uses_dsa (dev)) +continue ; + + err =dev_change_flags (dev, dev->flags |IFF_UP ); +if (err <0 ) { +np_err (np,"%s failed to open %s\n" , + np->dev_name, dev->name); + goto put; + } + } +if (netdev_master_upper_dev_get (ndev)) {np_err (np,"%s is a slave device, aborting\n" , np->dev_name); err = -EBUSY ;
net/ipv4/inet_diag.c +3 -1
@@ -355,8 +355,10 @@ static int inet_req_diag_fill(struct sock *sk, struct sk_buff *skb, r->idiag_inode =0 ;if (net_admin &&nla_put_u32 (skb,INET_DIAG_MARK , -inet_rsk (reqsk)->ir_mark)) +inet_rsk (reqsk)->ir_mark)) { +nlmsg_cancel (skb, nlh);return -EMSGSIZE ; + }nlmsg_end (skb, nlh);return 0 ;
net/ipv4/tcp_bbr.c +1 -1
@@ -740,7 +740,7 @@ static void bbr_update_min_rtt(struct sock *sk, const struct rate_sample *rs) filter_expired =after (tcp_time_stamp, bbr->min_rtt_stamp + bbr_min_rtt_win_sec *HZ );if (rs->rtt_us >=0 && - (rs->rtt_us <= bbr->min_rtt_us || filter_expired)) { + (rs->rtt_us < bbr->min_rtt_us || filter_expired)) { bbr->min_rtt_us = rs->rtt_us; bbr->min_rtt_stamp = tcp_time_stamp; }
net/ipv6/ah6.c +2 -1
@@ -595,7 +595,8 @@ static int ah6_input(struct xfrm_state *x, struct sk_buff *skb)memcpy (auth_data, ah->auth_data, ahp->icv_trunc_len);memset (ah->auth_data,0 , ahp->icv_trunc_len); -if (ipv6_clear_mutable_options (ip6h, hdr_len,XFRM_POLICY_IN )) + err =ipv6_clear_mutable_options (ip6h, hdr_len,XFRM_POLICY_IN ); +if (err) goto out_free; ip6h->priority =0 ;
net/mac80211/rc80211_minstrel.c +5 -22
@@ -274,7 +274,7 @@ minstrel_tx_status(void *priv, struct ieee80211_supported_band *sband, success = !!(info->flags &IEEE80211_TX_STAT_ACK );for (i =0 ; i <IEEE80211_TX_MAX_RATES ; i++) { -if (ar[i].idx <0 ) +if (ar[i].idx <0 || !ar[i].count)break ; ndx =rix_to_ndx (mi, ar[i].idx);
@@ -287,12 +287,6 @@ minstrel_tx_status(void *priv, struct ieee80211_supported_band *sband, mi->r[ndx].stats.success += success; } -if ((info->flags &IEEE80211_TX_CTL_RATE_CTRL_PROBE ) && (i >=0 )) - mi->sample_packets++; - -if (mi->sample_deferred >0 ) - mi->sample_deferred--; -if (time_after (jiffies, mi->last_stats_update + (mp->update_interval *HZ ) /1000 ))minstrel_update_stats (mp, mi);
@@ -366,7 +360,7 @@ minstrel_get_rate(void *priv, struct ieee80211_sta *sta,#endif delta = (mi->total_packets * sampling_ratio /100 ) - - (mi->sample_packets + mi->sample_deferred /2 ); + mi->sample_packets;/* delta < 0: no sampling required */ prev_sample = mi->prev_sample;
@@ -375,7 +369,6 @@ minstrel_get_rate(void *priv, struct ieee80211_sta *sta,return ;if (mi->total_packets >=10000 ) { - mi->sample_deferred =0 ; mi->sample_packets =0 ; mi->total_packets =0 ; }else if (delta > mi->n_rates *2 ) {
@@ -400,19 +393,8 @@ minstrel_get_rate(void *priv, struct ieee80211_sta *sta,* rate sampling method should be used. * Respect such rates that are not sampled for 20 interations. */ -if (mrr_capable && - msr->perfect_tx_time > mr->perfect_tx_time && - msr->stats.sample_skipped <20 ) { -/* Only use IEEE80211_TX_CTL_RATE_CTRL_PROBE to mark -* packets that have the sampling rate deferred to the -* second MRR stage. Increase the sample counter only -* if the deferred sample rate was actually used. -* Use the sample_deferred counter to make sure that -* the sampling is not done in large bursts */ - info->flags |=IEEE80211_TX_CTL_RATE_CTRL_PROBE ; - rate++; - mi->sample_deferred++; - }else { +if (msr->perfect_tx_time < mr->perfect_tx_time || + msr->stats.sample_skipped >=20 ) {if (!msr->sample_limit)return ;
@@ -432,6 +414,7 @@ minstrel_get_rate(void *priv, struct ieee80211_sta *sta, rate->idx = mi->r[ndx].rix; rate->count =minstrel_get_retry_count (&mi->r[ndx], info); + info->flags |=IEEE80211_TX_CTL_RATE_CTRL_PROBE ; }
net/mac80211/rc80211_minstrel.h +0 -1
@@ -105,7 +105,6 @@ struct minstrel_sta_info {u8 max_prob_rate;unsigned int total_packets;unsigned int sample_packets; -int sample_deferred;unsigned int sample_row;unsigned int sample_column;
net/mac80211/sta_info.c +4 -10
@@ -601,7 +601,7 @@ static int sta_info_insert_finish(struct sta_info *sta) __acquires(RCU) out_drop_sta: local->num_sta--;synchronize_net (); -__cleanup_single_sta (sta); +cleanup_single_sta (sta); out_err:mutex_unlock (&local->sta_mtx);kfree (sinfo);
@@ -620,19 +620,13 @@ int sta_info_insert_rcu(struct sta_info *sta) __acquires(RCU) err =sta_info_insert_check (sta);if (err) { +sta_info_free (local, sta);mutex_unlock (&local->sta_mtx);rcu_read_lock (); - goto out_free; +return err; } - err =sta_info_insert_finish (sta); -if (err) - goto out_free; - -return 0 ; - out_free: -sta_info_free (local, sta); -return err; +return sta_info_insert_finish (sta); }int sta_info_insert (struct sta_info *sta)
net/netlabel/netlabel_unlabeled.c +12 -5
@@ -1185,12 +1185,13 @@ static int netlbl_unlabel_staticlist(struct sk_buff *skb,struct netlbl_unlhsh_walk_arg cb_arg;u32 skip_bkt = cb->args[0 ];u32 skip_chain = cb->args[1 ]; -u32 iter_bkt; -u32 iter_chain =0 , iter_addr4 =0 , iter_addr6 =0 ; +u32 skip_addr4 = cb->args[2 ]; +u32 iter_bkt, iter_chain =0 , iter_addr4 =0 , iter_addr6 =0 ;struct netlbl_unlhsh_iface *iface;struct list_head *iter_list;struct netlbl_af4list *addr4;#if IS_ENABLED (CONFIG_IPV6 ) +u32 skip_addr6 = cb->args[3 ];struct netlbl_af6list *addr6;#endif
@@ -1201,7 +1202,7 @@ static int netlbl_unlabel_staticlist(struct sk_buff *skb,rcu_read_lock ();for (iter_bkt = skip_bkt; iter_bkt <rcu_dereference (netlbl_unlhsh)->size; - iter_bkt++, iter_chain =0 , iter_addr4 =0 , iter_addr6 =0 ) { + iter_bkt++) { iter_list = &rcu_dereference (netlbl_unlhsh)->tbl[iter_bkt];list_for_each_entry_rcu (iface, iter_list, list) { if (!iface->valid ||
@@ -1209,7 +1210,7 @@ static int netlbl_unlabel_staticlist(struct sk_buff *skb,continue ;netlbl_af4list_foreach_rcu (addr4, &iface->addr4_list) { -if (iter_addr4++ < cb->args[2 ]) +if (iter_addr4++ < skip_addr4)continue ; if (netlbl_unlabel_staticlist_gen( NLBL_UNLABEL_C_STATICLIST,
@@ -1222,10 +1223,12 @@ static int netlbl_unlabel_staticlist(struct sk_buff *skb, goto unlabel_staticlist_return; } } + iter_addr4 =0 ; + skip_addr4 =0 ;#if IS_ENABLED (CONFIG_IPV6 )netlbl_af6list_foreach_rcu (addr6, &iface->addr6_list) { -if (iter_addr6++ < cb->args[3 ]) +if (iter_addr6++ < skip_addr6)continue ; if (netlbl_unlabel_staticlist_gen( NLBL_UNLABEL_C_STATICLIST,
@@ -1238,8 +1241,12 @@ static int netlbl_unlabel_staticlist(struct sk_buff *skb, goto unlabel_staticlist_return; } } + iter_addr6 =0 ; + skip_addr6 =0 ;#endif /* IPv6 */ } + iter_chain =0 ; + skip_chain =0 ; } unlabel_staticlist_return:
net/sctp/input.c +2 -2
@@ -449,7 +449,7 @@ void sctp_icmp_proto_unreachable(struct sock *sk,else {if (!mod_timer (&t->proto_unreach_timer, jiffies + (HZ /20 ))) -sctp_association_hold (asoc); +sctp_transport_hold (t); } }else {struct net *net =sock_net (sk);
@@ -458,7 +458,7 @@ void sctp_icmp_proto_unreachable(struct sock *sk, "encountered!\n", __func__);if (del_timer (&t->proto_unreach_timer)) -sctp_association_put (asoc); +sctp_transport_put (t); sctp_do_sm(net, SCTP_EVENT_T_OTHER, SCTP_ST_OTHER(SCTP_EVENT_ICMP_PROTO_UNREACH),
net/sctp/sm_sideeffect.c +2 -2
@@ -417,7 +417,7 @@ void sctp_generate_proto_unreach_event(unsigned long data)/* Try again later. */ if (!mod_timer (&transport->proto_unreach_timer, jiffies + (HZ /20 ))) -sctp_association_hold (asoc); +sctp_transport_hold (transport); goto out_unlock; }
@@ -433,7 +433,7 @@ void sctp_generate_proto_unreach_event(unsigned long data) out_unlock:bh_unlock_sock (sk); -sctp_association_put (asoc); +sctp_transport_put (transport); }
net/sctp/transport.c +1 -1
@@ -146,7 +146,7 @@ void sctp_transport_free(struct sctp_transport *transport)/* Delete the ICMP proto unreachable timer if it's active. */ if (del_timer (&transport->proto_unreach_timer)) -sctp_association_put (transport->asoc); +sctp_transport_put (transport);sctp_transport_put (transport); }
net/x25/af_x25.c +1 -0
@@ -1047,6 +1047,7 @@ int x25_rx_call_request(struct sk_buff *skb, struct x25_neigh *nb, makex25->lci = lci; makex25->dest_addr = dest_addr; makex25->source_addr = source_addr; +x25_neigh_hold (nb); makex25->neighbour = nb; makex25->facilities = facilities; makex25->dte_facilities= dte_facilities;
sound/core/control.c +1 -1
@@ -1381,7 +1381,7 @@ static int snd_ctl_elem_add(struct snd_ctl_file *file, unlock:up_write (&card->controls_rwsem); -return 0 ; +return err; } static int snd_ctl_elem_add_user(struct snd_ctl_file *file,
sound/pci/mixart/mixart_core.c +2 -3
@@ -83,7 +83,6 @@ static int get_msg(struct mixart_mgr *mgr, struct mixart_msg *resp,unsigned int i;#endif -mutex_lock (&mgr->msg_lock); err =0 ;/* copy message descriptor from miXart to driver */
@@ -132,8 +131,6 @@ static int get_msg(struct mixart_mgr *mgr, struct mixart_msg *resp,writel_be (headptr,MIXART_MEM (mgr,MSG_OUTBOUND_FREE_HEAD )); _clean_exit: -mutex_unlock (&mgr->msg_lock); -return err; }
@@ -271,7 +268,9 @@ int snd_mixart_send_msg(struct mixart_mgr *mgr, struct mixart_msg *request, int resp.data = resp_data; resp.size = max_resp_size; +mutex_lock (&mgr->msg_lock); err =get_msg (mgr, &resp, msg_frame); +mutex_unlock (&mgr->msg_lock);if ( request->message_id != resp.message_id )dev_err (&mgr->pci->dev,"RESPONSE ERROR!\n" );
tools/perf/builtin-lock.c +1 -1
@@ -616,7 +616,7 @@ static int report_lock_release_event(struct perf_evsel *evsel,case SEQ_STATE_READ_ACQUIRED : seq->read_count--;BUG_ON (seq->read_count <0 ); -if (!seq->read_count) { +if (seq->read_count) { ls->nr_release++; goto end; }