Linux 4.14.182
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.14.182 kernel.
All users of the 4.14 kernel series must upgrade.
The updated 4.14.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.14.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/include/asm/futex.h | 9 arch/arm64/kernel/machine_kexec.c | 3 arch/powerpc/Kconfig | 4 arch/x86/kernel/apic/apic.c | 27 +- arch/x86/kernel/unwind_orc.c | 7 drivers/base/component.c | 8 drivers/dma/tegra210-adma.c | 2 drivers/hid/hid-ids.h | 1 drivers/hid/hid-multitouch.c | 3 drivers/i2c/i2c-dev.c | 48 ++-- drivers/i2c/muxes/i2c-demux-pinctrl.c | 1 drivers/iio/accel/sca3000.c | 2 drivers/iio/adc/stm32-adc.c | 20 + drivers/iio/dac/vf610_dac.c | 1 drivers/iommu/amd_iommu_init.c | 9 drivers/media/platform/rcar_fdp1.c | 2 drivers/misc/mei/client.c | 2 drivers/mtd/ubi/debug.c | 12 - drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c | 13 - drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c | 6 drivers/net/gtp.c | 9 drivers/nvdimm/btt.c | 33 +- drivers/nvdimm/btt.h | 2 drivers/nvdimm/btt_devs.c | 8 drivers/platform/x86/asus-nb-wmi.c | 24 ++ drivers/rapidio/devices/rio_mport_cdev.c | 5 drivers/scsi/ibmvscsi/ibmvscsi.c | 4 drivers/scsi/qla2xxx/qla_mbx.c | 2 drivers/staging/greybus/uart.c | 4 drivers/staging/iio/resolver/ad2s1210.c | 17 + drivers/usb/core/message.c | 4 drivers/vhost/vsock.c | 10 drivers/watchdog/watchdog_dev.c | 67 ++--- fs/ceph/caps.c | 1 fs/configfs/dir.c | 1 fs/ext4/block_validity.c | 1 fs/file.c | 2 fs/gfs2/glock.c | 3 include/linux/padata.h | 13 - kernel/padata.c | 71 ++--- lib/Makefile | 2 net/l2tp/l2tp_core.c | 21 - net/l2tp/l2tp_core.h | 3 net/l2tp/l2tp_eth.c | 99 ++++++-- net/l2tp/l2tp_ppp.c | 238 ++++++++++++-------- net/rxrpc/rxkad.c | 3 scripts/gcc-plugins/Makefile | 1 scripts/gcc-plugins/gcc-common.h | 4 security/apparmor/apparmorfs.c | 3 security/integrity/evm/evm_crypto.c | 2 security/integrity/ima/ima_crypto.c | 12 - security/integrity/ima/ima_fs.c | 3 sound/core/pcm_lib.c | 1 sound/pci/ice1712/ice1712.c | 3 55 files changed, 528 insertions(+), 330 deletions(-)
Al Viro (1):
fix multiplication overflow in copy_fdtable()
Alan Stern (1):
USB: core: Fix misleading driver bug report
Alexander Monakov (1):
iommu/amd: Fix over-read of ACPI UID from IVRS table
Alexander Usyskin (1):
mei: release me_cl object reference
Arjun Vynipadath (2):
cxgb4: free mac_hlist properly cxgb4/cxgb4vf: Fix mac_hlist initialization and free
Arnd Bergmann (1):
ubsan: build ubsan.c more conservatively
Arun Easi (1):
scsi: qla2xxx: Fix hang when issuing nvme disconnect-all in NPIV
Bob Peterson (1):
Revert "gfs2: Don't demote a glock until its revokes are written"
Brent Lu (1):
ALSA: pcm: fix incorrect hw_base increase
Christoph Hellwig (1):
arm64: fix the flush_icache_range arguments in machine_kexec
Christophe JAILLET (4):
i2c: mux: demux-pinctrl: Fix an error handling path in 'i2c_demux_pinctrl_probe()'
dmaengine: tegra210-adma: Fix an error handling path in 'tegra_adma_probe()'
iio: sca3000: Remove an erroneous 'get_device()'
iio: dac: vf610: Fix an error handling path in 'vf610_dac_probe()'
Christophe Leroy (1):
powerpc: restore alphabetic order in Kconfig
Daniel Jordan (2):
padata: initialize pd->cpu with effective cpumask
padata: purge get_cpu and reorder_via_wq from padata_do_serial
Dragos Bogdan (1):
staging: iio: ad2s1210: Fix SPI reading
Fabrice Gasnier (1):
iio: adc: stm32-adc: fix device used to request dma
Frédéric Pierret (fepitre) (1):
gcc-common.h: Update for GCC 10
Geert Uytterhoeven (1):
media: fdp1: Fix R-Car M3-N naming in debug message
Greg Kroah-Hartman (1):
Linux 4.14.182
Guillaume Nault (4):
l2tp: don't register sessions in l2tp_session_create()
l2tp: initialise l2tp_eth sessions before registering them
l2tp: protect sock pointer of struct pppol2tp_session with RCU
l2tp: initialise PPP sessions before registering them
Hans de Goede (1):
platform/x86: asus-nb-wmi: Do not load on Asus T100TA and T200TA
Herbert Xu (1):
padata: Replace delayed timer with immediate workqueue in padata_reorder
James Hilliard (1):
component: Silence bind error on -EPROBE_DEFER
John Hubbard (1):
rapidio: fix an error in get_user_pages_fast() error handling
Josh Poimboeuf (1):
x86/unwind/orc: Fix unwind_get_return_address_ptr() for inactive tasks
Kevin Hao (2):
watchdog: Fix the race between the release of watchdog_core_data and cdev
i2c: dev: Fix the race between the release of i2c_dev and cdev
Mathias Krause (3):
padata: ensure the reorder timer callback runs on the correct CPU
padata: ensure padata_do_serial() runs on the correct CPU
padata: set cpu_index of unused CPUs to -1
Michael Ellerman (1):
powerpc/64s: Disable STRICT_KERNEL_RWX
Oscar Carter (1):
staging: greybus: Fix uninitialized scalar variable
Peter Ujfalusi (1):
iio: adc: stm32-adc: Use dma_request_chan() instead dma_request_slave_channel()
Peter Zijlstra (1):
x86/uaccess, ubsan: Fix UBSAN vs. SMAP
Qiushi Wu (1):
rxrpc: Fix a memory leak in rxkad_verify_response()
Richard Weinberger (1):
ubi: Fix seq_file usage in detailed_erase_block_info debugfs file
Roberto Sassu (3):
ima: Set file->f_mode instead of file->f_flags in ima_calc_file_hash()
evm: Check also if *tfm is an error pointer in init_desc()
ima: Fix return value of ima_write_policy()
Russell Currey (1):
powerpc: Remove STRICT_KERNEL_RWX incompatibility with RELOCATABLE
Scott Bahling (1):
ALSA: iec1712: Initialize STDSP24 properly when using the model=staudio option
Sebastian Reichel (1):
HID: multitouch: add eGalaxTouch P80H84 support
Shijie Luo (1):
ext4: add cond_resched() to ext4_protect_reserved_inode
Stefano Garzarella (1):
vhost/vsock: fix packet delivery order to monitoring devices
Thomas Gleixner (2):
x86/apic: Move TSC deadline timer debug printk
ARM: futex: Address build warning
Tyrel Datwyler (1):
scsi: ibmvscsi: Fix WARN_ON during event pool release
Vishal Verma (2):
libnvdimm/btt: Remove unnecessary code in btt_freelist_init libnvdimm/btt: Fix LBA masking during 'free list' population
Wu Bo (1):
ceph: fix double unlock in handle_cap_export()
Xiyu Yang (2):
configfs: fix config_item refcnt leak in configfs_rmdir()
apparmor: Fix aa_label refcnt leak in policy_update
Yoshiyuki Kurauchi (1):
gtp: set NLM_F_MULTI flag in gtp_genl_dump_pdp()
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 14 -SUBLEVEL = 181 +SUBLEVEL = 182 EXTRAVERSION = NAME = Petit Gorille
arch/arm/include/asm/futex.h +7 -2
@@ -163,8 +163,13 @@ arch_futex_atomic_op_inuser(int op, int oparg, int *oval, u32 __user *uaddr)preempt_enable ();#endif -if (!ret) - *oval = oldval; +/* +* Store unconditionally. If ret != 0 the extra store is the least +* of the worries but GCC cannot figure out that __futex_atomic_op() +* is either setting ret to -EFAULT or storing the old value in +* oldval which results in a uninitialized warning at the call site. +*/ + *oval = oldval;return ret; }
arch/arm64/kernel/machine_kexec.c +2 -1
@@ -184,7 +184,8 @@ void machine_kexec(struct kimage *kimage)/* Flush the reboot_code_buffer in preparation for its execution. */ __flush_dcache_area (reboot_code_buffer, arm64_relocate_new_kernel_size);flush_icache_range ((uintptr_t )reboot_code_buffer, - arm64_relocate_new_kernel_size); + (uintptr_t )reboot_code_buffer + + arm64_relocate_new_kernel_size);/* Flush the kimage list and its buffers. */ kexec_list_flush (kimage);
arch/powerpc/Kconfig +2 -2
@@ -141,12 +141,14 @@ config PPC select ARCH_HAS_GCOV_PROFILE_ALL select ARCH_HAS_SCALED_CPUTIME if VIRT_CPU_ACCOUNTING_NATIVE select ARCH_HAS_SG_CHAIN + select ARCH_HAS_STRICT_KERNEL_RWX if (PPC32 && !HIBERNATION) select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST select ARCH_HAS_UBSAN_SANITIZE_ALL select ARCH_HAS_ZONE_DEVICE if PPC_BOOK3S_64 select ARCH_HAVE_NMI_SAFE_CMPXCHG select ARCH_MIGHT_HAVE_PC_PARPORT select ARCH_MIGHT_HAVE_PC_SERIO + select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX select ARCH_SUPPORTS_ATOMIC_RMW select ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT select ARCH_USE_BUILTIN_BSWAP
@@ -178,8 +180,6 @@ config PPC select HAVE_ARCH_MMAP_RND_COMPAT_BITS if COMPAT select HAVE_ARCH_SECCOMP_FILTER select HAVE_ARCH_TRACEHOOK - select ARCH_HAS_STRICT_KERNEL_RWX if ((PPC_BOOK3S_64 || PPC32) && !RELOCATABLE && !HIBERNATION) - select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX select HAVE_CBPF_JIT if !PPC64 select HAVE_CONTEXT_TRACKING if PPC64 select HAVE_DEBUG_KMEMLEAK
arch/x86/kernel/apic/apic.c +14 -13
@@ -353,8 +353,6 @@ static void __setup_APIC_LVTT(unsigned int clocks, int oneshot, int irqen)* According to Intel, MFENCE can do the serialization here. */ asmvolatile ("mfence" : : :"memory" ); - -printk_once (KERN_DEBUG "TSC deadline timer enabled\n" );return ; }
@@ -553,7 +551,7 @@ static DEFINE_PER_CPU(struct clock_event_device, lapic_events);#define DEADLINE_MODEL_MATCH_REV (model, rev) \ { X86_VENDOR_INTEL, 6, model, X86_FEATURE_ANY, (unsigned long)rev } -static u32 hsx_deadline_rev (void ) +static __init u32 hsx_deadline_rev (void ) {switch (boot_cpu_data.x86_stepping) {case 0x02 :return 0x3a ;/* EP */
@@ -563,7 +561,7 @@ static u32 hsx_deadline_rev(void)return ~0U ; } -static u32 bdx_deadline_rev (void ) +static __init u32 bdx_deadline_rev (void ) {switch (boot_cpu_data.x86_stepping) {case 0x02 :return 0x00000011 ;
@@ -575,7 +573,7 @@ static u32 bdx_deadline_rev(void)return ~0U ; } -static u32 skx_deadline_rev (void ) +static __init u32 skx_deadline_rev (void ) {switch (boot_cpu_data.x86_stepping) {case 0x03 :return 0x01000136 ;
@@ -588,7 +586,7 @@ static u32 skx_deadline_rev(void)return ~0U ; } -static const struct x86_cpu_id deadline_match[] = { +static const struct x86_cpu_id deadline_match[]__initconst = {DEADLINE_MODEL_MATCH_FUNC (INTEL_FAM6_HASWELL_X , hsx_deadline_rev),DEADLINE_MODEL_MATCH_REV (INTEL_FAM6_BROADWELL_X ,0x0b000020 ),DEADLINE_MODEL_MATCH_FUNC (INTEL_FAM6_BROADWELL_XEON_D , bdx_deadline_rev),
@@ -610,18 +608,19 @@ static const struct x86_cpu_id deadline_match[] = { {}, }; -static void apic_check_deadline_errata (void ) +static __init bool apic_validate_deadline_timer (void ) {const struct x86_cpu_id *m;u32 rev; -if (!boot_cpu_has (X86_FEATURE_TSC_DEADLINE_TIMER ) || -boot_cpu_has (X86_FEATURE_HYPERVISOR )) -return ; +if (!boot_cpu_has (X86_FEATURE_TSC_DEADLINE_TIMER )) +return false; +if (boot_cpu_has (X86_FEATURE_HYPERVISOR )) +return true; m =x86_match_cpu (deadline_match);if (!m) -return ; +return true;/* * Function pointers will have the MSB set due to address layout,
@@ -633,11 +632,12 @@ static void apic_check_deadline_errata(void) rev = (u32 )m->driver_data;if (boot_cpu_data.microcode >= rev) -return ; +return true;setup_clear_cpu_cap (X86_FEATURE_TSC_DEADLINE_TIMER );pr_err (FW_BUG "TSC_DEADLINE disabled due to Errata; " "please update microcode to version: 0x%x (or later)\n" , rev); +return false; }/*
@@ -1914,7 +1914,8 @@ void __init init_apic_mappings(void) {unsigned int new_apicid; -apic_check_deadline_errata (); +if (apic_validate_deadline_timer ()) +pr_debug ("TSC deadline timer available\n" );if (x2apic_mode) { boot_cpu_physical_apicid =read_apic_id ();
arch/x86/kernel/unwind_orc.c +7 -0
@@ -255,12 +255,19 @@ EXPORT_SYMBOL_GPL(unwind_get_return_address);unsigned long *unwind_get_return_address_ptr (struct unwind_state *state) { +struct task_struct *task = state->task; +if (unwind_done (state))return NULL ;if (state->regs)return &state->regs->ip; +if (task != current && state->sp == task->thread.sp) { +struct inactive_task_frame *frame = (void *)task->thread.sp; +return &frame->ret_addr; + } +if (state->sp)return (unsigned long *)state->sp -1 ;
drivers/base/component.c +5 -3
@@ -162,7 +162,8 @@ static int try_to_bring_up_master(struct master *master, ret = master->ops->bind (master->dev);if (ret <0 ) {devres_release_group (master->dev,NULL ); -dev_info (master->dev,"master bind failed: %d\n" , ret); +if (ret != -EPROBE_DEFER ) +dev_info (master->dev,"master bind failed: %d\n" , ret);return ret; }
@@ -431,8 +432,9 @@ static int component_bind(struct component *component, struct master *master,devres_release_group (component->dev,NULL );devres_release_group (master->dev,NULL ); -dev_err (master->dev,"failed to bind %s (ops %ps): %d\n" , -dev_name (component->dev), component->ops, ret); +if (ret != -EPROBE_DEFER ) +dev_err (master->dev,"failed to bind %s (ops %ps): %d\n" , +dev_name (component->dev), component->ops, ret); }return ret;
drivers/dma/tegra210-adma.c +1 -1
@@ -793,7 +793,7 @@ static int tegra_adma_probe(struct platform_device *pdev) ret =dma_async_device_register (&tdma->dma_dev);if (ret <0 ) {dev_err (&pdev->dev,"ADMA registration failed: %d\n" , ret); - goto irq_dispose; + goto rpm_put; } ret = of_dma_controller_register(pdev->dev.of_node,
drivers/hid/hid-ids.h +1 -0
@@ -369,6 +369,7 @@#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_7349 0x7349#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_73F7 0x73f7#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_A001 0xa001 +#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_C002 0xc002#define USB_VENDOR_ID_ELAN 0x04f3
drivers/hid/hid-multitouch.c +3 -0
@@ -1550,6 +1550,9 @@ static const struct hid_device_id mt_devices[] = { { .driver_data = MT_CLS_EGALAX_SERIAL,MT_USB_DEVICE (USB_VENDOR_ID_DWAV , USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_A001) }, + { .driver_data = MT_CLS_EGALAX, +MT_USB_DEVICE (USB_VENDOR_ID_DWAV , + USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_C002) }, /* Elitegroup panel */ { .driver_data = MT_CLS_SERIAL,
drivers/i2c/i2c-dev.c +26 -22
87 lines not on this page · raw message
drivers/i2c/muxes/i2c-demux-pinctrl.c +1 -0
@@ -270,6 +270,7 @@ static int i2c_demux_pinctrl_probe(struct platform_device *pdev) err_rollback_available:device_remove_file (&pdev->dev, &dev_attr_available_masters); err_rollback: +i2c_demux_deactivate_master (priv);for (j =0 ; j < i; j++) {of_node_put (priv->chan[j].parent_np);of_changeset_destroy (&priv->chan[j].chgset);
drivers/iio/accel/sca3000.c +1 -1
@@ -982,7 +982,7 @@ static int sca3000_read_data(struct sca3000_state *st, st->tx[0 ] =SCA3000_READ_REG (reg_address_high); ret =spi_sync_transfer (st->us, xfer,ARRAY_SIZE (xfer));if (ret) { -dev_err (get_device (&st->us->dev),"problem reading register" ); +dev_err (&st->us->dev,"problem reading register\n" );return ret; }
drivers/iio/adc/stm32-adc.c +16 -4
@@ -1627,15 +1627,27 @@ static int stm32_adc_chan_of_init(struct iio_dev *indio_dev)return 0 ; } -static int stm32_adc_dma_request (struct iio_dev *indio_dev) +static int stm32_adc_dma_request (struct device *dev,struct iio_dev *indio_dev) {struct stm32_adc *adc =iio_priv (indio_dev);struct dma_slave_config config;int ret; - adc->dma_chan =dma_request_slave_channel (&indio_dev->dev,"rx" ); -if (!adc->dma_chan) + adc->dma_chan =dma_request_chan (dev,"rx" ); +if (IS_ERR (adc->dma_chan)) { + ret =PTR_ERR (adc->dma_chan); +if (ret != -ENODEV ) { +if (ret != -EPROBE_DEFER ) +dev_err (dev, +"DMA channel request failed with %d\n" , + ret); +return ret; + } + +/* DMA is optional: fall back to IRQ mode */ + adc->dma_chan =NULL ;return 0 ; + } adc->rx_buf = dma_alloc_coherent(adc->dma_chan->device->dev, STM32_DMA_BUFFER_SIZE,
@@ -1749,7 +1761,7 @@ static int stm32_adc_probe(struct platform_device *pdev)if (ret <0 ) goto err_clk_disable; - ret =stm32_adc_dma_request (indio_dev); + ret =stm32_adc_dma_request (dev, indio_dev);if (ret <0 ) goto err_clk_disable;
drivers/iio/dac/vf610_dac.c +1 -0
@@ -235,6 +235,7 @@ static int vf610_dac_probe(struct platform_device *pdev)return 0 ; error_iio_device_register: +vf610_dac_exit (info);clk_disable_unprepare (info->clk);return ret;
drivers/iommu/amd_iommu_init.c +5 -4
@@ -1317,8 +1317,8 @@ static int __init init_iommu_from_acpi(struct amd_iommu *iommu, }case IVHD_DEV_ACPI_HID : {u16 devid; -u8 hid[ACPIHID_HID_LEN ] = {0 }; -u8 uid[ACPIHID_UID_LEN ] = {0 }; +u8 hid[ACPIHID_HID_LEN ]; +u8 uid[ACPIHID_UID_LEN ];int ret;if (h->type !=0x40 ) {
@@ -1335,6 +1335,7 @@ static int __init init_iommu_from_acpi(struct amd_iommu *iommu,break ; } + uid[0 ] ='\0' ;switch (e->uidf) {case UID_NOT_PRESENT :
@@ -1349,8 +1350,8 @@ static int __init init_iommu_from_acpi(struct amd_iommu *iommu,break ;case UID_IS_CHARACTER : -memcpy (uid, (u8 *)(&e->uid),ACPIHID_UID_LEN -1 ); - uid[ACPIHID_UID_LEN -1 ] ='\0' ; +memcpy (uid, &e->uid, e->uidl); + uid[e->uidl] ='\0' ;break ;default :
drivers/media/platform/rcar_fdp1.c +1 -1
@@ -2372,7 +2372,7 @@ static int fdp1_probe(struct platform_device *pdev)dprintk (fdp1,"FDP1 Version R-Car H3\n" );break ;case FD1_IP_M3N : -dprintk (fdp1,"FDP1 Version R-Car M3N\n" ); +dprintk (fdp1,"FDP1 Version R-Car M3-N\n" );break ;case FD1_IP_E3 :dprintk (fdp1,"FDP1 Version R-Car E3\n" );
drivers/misc/mei/client.c +2 -0
@@ -276,6 +276,7 @@ void mei_me_cl_rm_by_uuid(struct mei_device *dev, const uuid_le *uuid)down_write (&dev->me_clients_rwsem); me_cl =__mei_me_cl_by_uuid (dev, uuid);__mei_me_cl_del (dev, me_cl); +mei_me_cl_put (me_cl);up_write (&dev->me_clients_rwsem); }
@@ -297,6 +298,7 @@ void mei_me_cl_rm_by_uuid_id(struct mei_device *dev, const uuid_le *uuid, u8 id)down_write (&dev->me_clients_rwsem); me_cl =__mei_me_cl_by_uuid_id (dev, uuid, id);__mei_me_cl_del (dev, me_cl); +mei_me_cl_put (me_cl);up_write (&dev->me_clients_rwsem); }
drivers/mtd/ubi/debug.c +2 -10
@@ -405,9 +405,6 @@ static void *eraseblk_count_seq_start(struct seq_file *s, loff_t *pos) {struct ubi_device *ubi = s->private; -if (*pos ==0 ) -return SEQ_START_TOKEN ; -if (*pos < ubi->peb_count)return pos;
@@ -421,8 +418,6 @@ static void *eraseblk_count_seq_next(struct seq_file *s, void *v, loff_t *pos) {struct ubi_device *ubi = s->private; -if (v ==SEQ_START_TOKEN ) -return pos; (*pos)++;if (*pos < ubi->peb_count)
@@ -444,11 +439,8 @@ static int eraseblk_count_seq_show(struct seq_file *s, void *iter)int err;/* If this is the start, print a header */ -if (iter ==SEQ_START_TOKEN ) { -seq_puts (s, -"physical_block_number\terase_count\tblock_status\tread_status\n" ); -return 0 ; - } +if (*block_number ==0 ) +seq_puts (s,"physical_block_number\terase_count\n" ); err =ubi_io_is_bad (ubi, *block_number);if (err)
drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c +11 -2
@@ -2241,8 +2241,6 @@ static int cxgb_up(struct adapter *adap)#if IS_ENABLED (CONFIG_IPV6 )update_clip (adap);#endif -/* Initialize hash mac addr list*/ -INIT_LIST_HEAD (&adap->mac_hlist);return err; irq_err:
@@ -2264,6 +2262,7 @@ static void cxgb_down(struct adapter *adapter)t4_sge_stop (adapter);t4_free_sge_resources (adapter); + adapter->flags &= ~FULL_INIT_DONE ; }
@@ -4962,6 +4961,9 @@ static int init_one(struct pci_dev *pdev, const struct pci_device_id *ent) (is_t5 (adapter->params.chip) ?STATMODE_V (0 ) : T6_STATMODE_V(0))); +/* Initialize hash mac addr list */ +INIT_LIST_HEAD (&adapter->mac_hlist); +for_each_port (adapter, i) { netdev =alloc_etherdev_mq (sizeof (struct port_info ),MAX_ETH_QSETS );
@@ -5252,6 +5254,7 @@ static int init_one(struct pci_dev *pdev, const struct pci_device_id *ent)static void remove_one (struct pci_dev *pdev) {struct adapter *adapter =pci_get_drvdata (pdev); +struct hash_mac_addr *entry, *tmp;if (!adapter) {pci_release_regions (pdev);
@@ -5295,6 +5298,12 @@ static void remove_one(struct pci_dev *pdev)if (adapter->num_uld || adapter->num_ofld_uld)t4_uld_mem_free (adapter);free_some_resources (adapter); +list_for_each_entry_safe (entry, tmp, &adapter->mac_hlist, + list) { +list_del (&entry->list); +kfree (entry); + } +#if IS_ENABLED (CONFIG_IPV6 )t4_cleanup_clip_tbl (adapter);#endif
drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c +3 -3
@@ -715,9 +715,6 @@ static int adapter_up(struct adapter *adapter)if (adapter->flags &USING_MSIX )name_msix_vecs (adapter); -/* Initialize hash mac addr list*/ -INIT_LIST_HEAD (&adapter->mac_hlist); - adapter->flags |=FULL_INIT_DONE ; }
@@ -2936,6 +2933,9 @@ static int cxgb4vf_pci_probe(struct pci_dev *pdev,if (err) goto err_unmap_bar; +/* Initialize hash mac addr list */ +INIT_LIST_HEAD (&adapter->mac_hlist); +/* * Allocate our "adapter ports" and stitch everything together. */
drivers/net/gtp.c +5 -4
@@ -1177,11 +1177,11 @@ static int gtp_genl_del_pdp(struct sk_buff *skb, struct genl_info *info)static struct genl_family gtp_genl_family;static int gtp_genl_fill_info (struct sk_buff *skb,u32 snd_portid,u32 snd_seq, -u32 type,struct pdp_ctx *pctx) +int flags,u32 type,struct pdp_ctx *pctx) {void *genlh; - genlh =genlmsg_put (skb, snd_portid, snd_seq, >p_genl_family,0 , + genlh =genlmsg_put (skb, snd_portid, snd_seq, >p_genl_family, flags, type);if (genlh ==NULL ) goto nlmsg_failure;
@@ -1235,8 +1235,8 @@ static int gtp_genl_get_pdp(struct sk_buff *skb, struct genl_info *info) goto err_unlock; } - err =gtp_genl_fill_info (skb2,NETLINK_CB (skb).portid, - info->snd_seq, info->nlhdr->nlmsg_type, pctx); + err =gtp_genl_fill_info (skb2,NETLINK_CB (skb).portid, info->snd_seq, +0 , info->nlhdr->nlmsg_type, pctx);if (err <0 ) goto err_unlock_free;
@@ -1279,6 +1279,7 @@ static int gtp_genl_dump_pdp(struct sk_buff *skb,gtp_genl_fill_info (skb,NETLINK_CB (cb->skb).portid, cb->nlh->nlmsg_seq, +NLM_F_MULTI , cb->nlh->nlmsg_type, pctx)) { cb->args[0] = i; cb->args[1 ] = j;
drivers/nvdimm/btt.c +21 -12
@@ -540,9 +540,9 @@ static int arena_clear_freelist_error(struct arena_info *arena, u32 lane)static int btt_freelist_init (struct arena_info *arena) { -int old, new, ret; -u32 i, map_entry; -struct log_entry log_new, log_old; +int new, ret; +struct log_entry log_new; +u32 i, map_entry, log_oldmap, log_newmap; arena->freelist =kcalloc (arena->nfree,sizeof (struct free_entry ),GFP_KERNEL );
@@ -550,24 +550,26 @@ static int btt_freelist_init(struct arena_info *arena)return -ENOMEM ;for (i =0 ; i < arena->nfree; i++) { - old =btt_log_read (arena, i, &log_old,LOG_OLD_ENT ); -if (old <0 ) -return old; - new =btt_log_read (arena, i, &log_new,LOG_NEW_ENT );if (new <0 )return new; +/* old and new map entries with any flags stripped out */ + log_oldmap =ent_lba (le32_to_cpu (log_new.old_map)); + log_newmap =ent_lba (le32_to_cpu (log_new.new_map)); +/* sub points to the next one to be overwritten */ arena->freelist[i].sub =1 - new; arena->freelist[i].seq =nd_inc_seq (le32_to_cpu (log_new.seq)); - arena->freelist[i].block =le32_to_cpu (log_new.old_map); + arena->freelist[i].block = log_oldmap;/* * FIXME: if error clearing fails during init, we want to make * the BTT read-only */ -if (ent_e_flag (log_new.old_map)) { +if (ent_e_flag (log_new.old_map) && + !ent_normal (log_new.old_map)) { + arena->freelist[i].has_err =1 ; ret =arena_clear_freelist_error (arena, i);if (ret) dev_err_ratelimited(to_dev(arena),
@@ -575,7 +577,7 @@ static int btt_freelist_init(struct arena_info *arena) }/* This implies a newly created or untouched flog entry */ -if (log_new.old_map == log_new.new_map) +if (log_oldmap == log_newmap)continue ;/* Check if map recovery is needed */
@@ -583,8 +585,15 @@ static int btt_freelist_init(struct arena_info *arena) NULL, NULL, 0);if (ret)return ret; -if ((le32_to_cpu (log_new.new_map) != map_entry) && - (le32_to_cpu (log_new.old_map) == map_entry)) { + +/* +* The map_entry from btt_read_map is stripped of any flag bits, +* so use the stripped out versions from the log as well for +* testing whether recovery is needed. For restoration, use the +* 'raw' version of the log entries as that captured what we +* were going to write originally. +*/ +if ((log_newmap != map_entry) && (log_oldmap == map_entry)) {/* * Last transaction wrote the flog, but wasn't able * to complete the map write. So fix up the map.
drivers/nvdimm/btt.h +2 -0
@@ -44,6 +44,8 @@#define ent_e_flag (ent) (!!(ent & MAP_ERR_MASK))#define ent_z_flag (ent) (!!(ent & MAP_TRIM_MASK))#define set_e_flag (ent) (ent |= MAP_ERR_MASK) +/* 'normal' is both e and z flags set */ +#define ent_normal (ent) (ent_e_flag(ent) && ent_z_flag(ent))enum btt_init_state {INIT_UNCHECKED =0 ,
drivers/nvdimm/btt_devs.c +8 -0
@@ -159,11 +159,19 @@ static ssize_t size_show(struct device *dev, }static DEVICE_ATTR_RO (size); +static ssize_t log_zero_flags_show (struct device *dev, +struct device_attribute *attr,char *buf) +{ +return sprintf (buf,"Y\n" ); +} +static DEVICE_ATTR_RO (log_zero_flags); +static struct attribute *nd_btt_attributes[] = { &dev_attr_sector_size.attr, &dev_attr_namespace.attr, &dev_attr_uuid.attr, &dev_attr_size.attr, + &dev_attr_log_zero_flags.attr,NULL , };
drivers/platform/x86/asus-nb-wmi.c +24 -0
@@ -517,9 +517,33 @@ static struct asus_wmi_driver asus_nb_wmi_driver = { .detect_quirks = asus_nb_wmi_quirks, }; +static const struct dmi_system_id asus_nb_wmi_blacklist[]__initconst = { + { +/* +* asus-nb-wm adds no functionality. The T100TA has a detachable +* USB kbd, so no hotkeys and it has no WMI rfkill; and loading +* asus-nb-wm causes the camera LED to turn and _stay_ on. +*/ + .matches = { +DMI_EXACT_MATCH (DMI_SYS_VENDOR ,"ASUSTeK COMPUTER INC." ), +DMI_EXACT_MATCH (DMI_PRODUCT_NAME ,"T100TA" ), + }, + }, + { +/* The Asus T200TA has the same issue as the T100TA */ + .matches = { +DMI_EXACT_MATCH (DMI_SYS_VENDOR ,"ASUSTeK COMPUTER INC." ), +DMI_EXACT_MATCH (DMI_PRODUCT_NAME ,"T200TA" ), + }, + }, + {}/* Terminating entry */ +};static int __init asus_nb_wmi_init (void ) { +if (dmi_check_system (asus_nb_wmi_blacklist)) +return -ENODEV ; +return asus_wmi_register_driver (&asus_nb_wmi_driver); }
drivers/rapidio/devices/rio_mport_cdev.c +5 -0
@@ -904,6 +904,11 @@ rio_dma_transfer(struct file *filp, u32 transfer_mode,rmcd_error ("pinned %ld out of %ld pages" , pinned, nr_pages); ret = -EFAULT ; +/* +* Set nr_pages up to mean "how many pages to unpin, in +* the error handler: +*/ + nr_pages = pinned; goto err_pg; }
drivers/scsi/ibmvscsi/ibmvscsi.c +0 -4
@@ -2299,16 +2299,12 @@ static int ibmvscsi_probe(struct vio_dev *vdev, const struct vio_device_id *id)static int ibmvscsi_remove (struct vio_dev *vdev) {struct ibmvscsi_host_data *hostdata =dev_get_drvdata (&vdev->dev); -unsigned long flags;srp_remove_host (hostdata->host);scsi_remove_host (hostdata->host);purge_requests (hostdata,DID_ERROR ); - -spin_lock_irqsave (hostdata->host->host_lock, flags);release_event_pool (&hostdata->pool, hostdata); -spin_unlock_irqrestore (hostdata->host->host_lock, flags);ibmvscsi_release_crq_queue (&hostdata->queue, hostdata, max_events);
drivers/scsi/qla2xxx/qla_mbx.c +1 -1
@@ -2998,7 +2998,7 @@ qla24xx_abort_command(srb_t *sp)ql_dbg (ql_dbg_mbx + ql_dbg_verbose, vha,0x108c ,"Entered %s.\n" , __func__); -if (vha->flags.qpairs_available && sp->qpair) +if (sp->qpair) req = sp->qpair->req;if (ql2xasynctmfenable)
drivers/staging/greybus/uart.c +2 -2
@@ -538,9 +538,9 @@ static void gb_tty_set_termios(struct tty_struct *tty, }if (C_CRTSCTS (tty) &&C_BAUD (tty) !=B0 ) - newline.flow_control |=GB_SERIAL_AUTO_RTSCTS_EN ; + newline.flow_control =GB_SERIAL_AUTO_RTSCTS_EN ;else - newline.flow_control &= ~GB_SERIAL_AUTO_RTSCTS_EN ; + newline.flow_control =0 ;if (memcmp (&gb_tty->line_coding, &newline,sizeof (newline))) {memcpy (&gb_tty->line_coding, &newline,sizeof (newline));
drivers/staging/iio/resolver/ad2s1210.c +12 -5
@@ -126,17 +126,24 @@ static int ad2s1210_config_write(struct ad2s1210_state *st, u8 data)static int ad2s1210_config_read (struct ad2s1210_state *st,unsigned char address) { -struct spi_transfer xfer = { - .len =2 , - .rx_buf = st->rx, - .tx_buf = st->tx, +struct spi_transfer xfers[] = { + { + .len =1 , + .rx_buf = &st->rx[0 ], + .tx_buf = &st->tx[0 ], + .cs_change =1 , + }, { + .len =1 , + .rx_buf = &st->rx[1 ], + .tx_buf = &st->tx[1 ], + }, };int ret =0 ;ad2s1210_set_mode (MOD_CONFIG , st); st->tx[0 ] = address |AD2S1210_MSB_IS_HIGH ; st->tx[1 ] =AD2S1210_REG_FAULT ; - ret =spi_sync_transfer (st->sdev, &xfer,1 ); + ret =spi_sync_transfer (st->sdev, xfers,2 );if (ret <0 )return ret; st->old_data = true;
drivers/usb/core/message.c +2 -2
@@ -1082,11 +1082,11 @@ void usb_disable_endpoint(struct usb_device *dev, unsigned int epaddr,if (usb_endpoint_out (epaddr)) { ep = dev->ep_out[epnum]; -if (reset_hardware) +if (reset_hardware && epnum !=0 ) dev->ep_out[epnum] =NULL ; }else { ep = dev->ep_in[epnum]; -if (reset_hardware) +if (reset_hardware && epnum !=0 ) dev->ep_in[epnum] =NULL ; }if (ep) {
drivers/vhost/vsock.c +5 -5
@@ -182,14 +182,14 @@ vhost_transport_do_send_pkt(struct vhost_vsock *vsock,break ; } -vhost_add_used (vq, head,sizeof (pkt->hdr) + payload_len); - added = true; - -/* Deliver to monitoring devices all correctly transmitted -* packets. +/* Deliver to monitoring devices all packets that we +* will transmit. */ virtio_transport_deliver_tap_pkt (pkt); +vhost_add_used (vq, head,sizeof (pkt->hdr) + payload_len); + added = true; + pkt->off += payload_len; total_len += payload_len;
drivers/watchdog/watchdog_dev.c +30 -37
186 lines not on this page · raw message
fs/ceph/caps.c +1 -0
@@ -3502,6 +3502,7 @@ static void handle_cap_export(struct inode *inode, struct ceph_mds_caps *ex,WARN_ON (1 ); tsession =NULL ; target =-1 ; +mutex_lock (&session->s_mutex); } goto retry;
fs/configfs/dir.c +1 -0
@@ -1537,6 +1537,7 @@ static int configfs_rmdir(struct inode *dir, struct dentry *dentry)spin_lock (&configfs_dirent_lock);configfs_detach_rollback (dentry);spin_unlock (&configfs_dirent_lock); +config_item_put (parent_item);return -EINTR ; } frag->frag_dead = true;
fs/ext4/block_validity.c +1 -0
@@ -153,6 +153,7 @@ static int ext4_protect_reserved_inode(struct super_block *sb, u32 ino)return PTR_ERR (inode); num = (inode->i_size + sb->s_blocksize -1 ) >> sb->s_blocksize_bits;while (i < num) { +cond_resched (); map.m_lblk = i; map.m_len = num - i; n =ext4_map_blocks (NULL , inode, &map,0 );
fs/file.c +1 -1
@@ -75,7 +75,7 @@ static void copy_fd_bitmaps(struct fdtable *nfdt, struct fdtable *ofdt,*/ static void copy_fdtable (struct fdtable *nfdt,struct fdtable *ofdt) { -unsigned int cpy, set; +size_t cpy, set;BUG_ON (nfdt->max_fds < ofdt->max_fds);
fs/gfs2/glock.c +0 -3
@@ -636,9 +636,6 @@ __acquires(&gl->gl_lockref.lock) goto out_unlock;if (nonblock) goto out_sched; -smp_mb (); -if (atomic_read (&gl->gl_revokes) !=0 ) - goto out_sched;set_bit (GLF_DEMOTE_IN_PROGRESS , &gl->gl_flags);GLOCK_BUG_ON (gl, gl->gl_demote_state ==LM_ST_EXCLUSIVE ); gl->gl_target = gl->gl_demote_state;
include/linux/padata.h +6 -7
@@ -24,7 +24,6 @@#include <linux/workqueue.h> #include <linux/spinlock.h> #include <linux/list.h> -#include <linux/timer.h> #include <linux/notifier.h> #include <linux/kobject.h>
@@ -37,6 +36,7 @@* @list: List entry, to attach to the padata lists. * @pd: Pointer to the internal control structure. * @cb_cpu: Callback cpu for serializatioon. +* @cpu: Cpu for parallelization. * @seq_nr: Sequence number of the parallelized data object. * @info: Used to pass information from the parallel to the serial function. * @parallel: Parallel execution function.
@@ -46,6 +46,7 @@ struct padata_priv {struct list_head list;struct parallel_data *pd;int cb_cpu; +int cpu;int info;void (*parallel)(struct padata_priv *padata);void (*serial)(struct padata_priv *padata);
@@ -83,7 +84,6 @@ struct padata_serial_queue {* @serial: List to wait for serialization after reordering. * @pwork: work struct for parallelization. * @swork: work struct for serialization. -* @pd: Backpointer to the internal control structure. * @work: work struct for parallelization. * @num_obj: Number of objects that are processed by this cpu. * @cpu_index: Index of the cpu.
@@ -91,7 +91,6 @@ struct padata_serial_queue {struct padata_parallel_queue {struct padata_list parallel;struct padata_list reorder; -struct parallel_data *pd;struct work_struct work;atomic_t num_obj;int cpu_index;
@@ -118,10 +117,10 @@ struct padata_cpumask {* @reorder_objects: Number of objects waiting in the reorder queues. * @refcnt: Number of objects holding a reference on this parallel_data. * @max_seq_nr: Maximal used sequence number. +* @cpu: Next CPU to be processed. * @cpumask: The cpumasks in use for parallel and serial workers. +* @reorder_work: work struct for reordering. * @lock: Reorder lock. -* @processed: Number of already processed objects. -* @timer: Reorder timer. */ struct parallel_data {struct padata_instance *pinst;
@@ -130,10 +129,10 @@ struct parallel_data {atomic_t reorder_objects;atomic_t refcnt;atomic_t seq_nr; +int cpu;struct padata_cpumask cpumask; +struct work_struct reorder_work;spinlock_t lock____cacheline_aligned ; -unsigned int processed; -struct timer_list timer; };/**
kernel/padata.c +30 -41
157 lines not on this page · raw message
lib/Makefile +2 -0
@@ -256,6 +256,8 @@ obj-$(CONFIG_UCS2_STRING) += ucs2_string.o obj-$(CONFIG_UBSAN) += ubsan.o UBSAN_SANITIZE_ubsan.o := n +KASAN_SANITIZE_ubsan.o := n +CFLAGS_ubsan.o := $(call cc-option, -fno-stack-protector) $(DISABLE_STACKLEAK_PLUGIN) obj-$(CONFIG_SBITMAP) += sbitmap.o
net/l2tp/l2tp_core.c +7 -14
@@ -328,8 +328,8 @@ struct l2tp_session *l2tp_session_get_by_ifname(const struct net *net, }EXPORT_SYMBOL_GPL (l2tp_session_get_by_ifname); -static int l2tp_session_add_to_tunnel (struct l2tp_tunnel *tunnel, -struct l2tp_session *session) +int l2tp_session_register (struct l2tp_session *session, +struct l2tp_tunnel *tunnel) {struct l2tp_session *session_walk;struct hlist_head *g_head;
@@ -382,6 +382,10 @@ static int l2tp_session_add_to_tunnel(struct l2tp_tunnel *tunnel,hlist_add_head (&session->hlist, head);write_unlock_bh (&tunnel->hlist_lock); +/* Ignore management session in session count value */ +if (session->session_id !=0 ) +atomic_inc (&l2tp_session_count); +return 0 ; err_tlock_pnlock:
@@ -391,6 +395,7 @@ static int l2tp_session_add_to_tunnel(struct l2tp_tunnel *tunnel,return err; } +EXPORT_SYMBOL_GPL (l2tp_session_register);/* Lookup a tunnel by id */
@@ -1791,7 +1796,6 @@ EXPORT_SYMBOL_GPL(l2tp_session_set_header_len);struct l2tp_session *l2tp_session_create (int priv_size,struct l2tp_tunnel *tunnel,u32 session_id,u32 peer_session_id,struct l2tp_session_cfg *cfg) {struct l2tp_session *session; -int err; session =kzalloc (sizeof (struct l2tp_session ) + priv_size,GFP_KERNEL );if (session !=NULL ) {
@@ -1848,17 +1852,6 @@ struct l2tp_session *l2tp_session_create(int priv_size, struct l2tp_tunnel *tunnrefcount_set (&session->ref_count,1 ); - err =l2tp_session_add_to_tunnel (tunnel, session); -if (err) { -kfree (session); - -return ERR_PTR (err); - } - -/* Ignore management session in session count value */ -if (session->session_id !=0 ) -atomic_inc (&l2tp_session_count); -return session; }
net/l2tp/l2tp_core.h +3 -0
@@ -257,6 +257,9 @@ struct l2tp_session *l2tp_session_create(int priv_size,struct l2tp_tunnel *tunnel, u32 session_id, u32 peer_session_id, struct l2tp_session_cfg *cfg); +int l2tp_session_register (struct l2tp_session *session, +struct l2tp_tunnel *tunnel); +void __l2tp_session_unhash (struct l2tp_session *session);int l2tp_session_delete (struct l2tp_session *session);void l2tp_session_free (struct l2tp_session *session);
net/l2tp/l2tp_eth.c +76 -23
174 lines not on this page · raw message
net/l2tp/l2tp_ppp.c +152 -86
408 lines not on this page · raw message
net/rxrpc/rxkad.c +1 -2
@@ -1111,7 +1111,7 @@ static int rxkad_verify_response(struct rxrpc_connection *conn, ret =rxkad_decrypt_ticket (conn, skb, ticket, ticket_len, &session_key, &expiry, _abort_code);if (ret <0 ) - goto temporary_error_free_resp; + goto temporary_error_free_ticket;/* use the session key from inside the ticket to decrypt the * response */
@@ -1193,7 +1193,6 @@ static int rxkad_verify_response(struct rxrpc_connection *conn, temporary_error_free_ticket:kfree (ticket); -temporary_error_free_resp:kfree (response); temporary_error:/* Ignore the response packet if we got a temporary error such as
scripts/gcc-plugins/Makefile +1 -0
@@ -10,6 +10,7 @@ else HOST_EXTRACXXFLAGS += -I$(GCC_PLUGINS_DIR)/include -I$(src) -std=gnu++98 -fno-rtti HOST_EXTRACXXFLAGS += -fno-exceptions -fasynchronous-unwind-tables -ggdb HOST_EXTRACXXFLAGS += -Wno-narrowing -Wno-unused-variable + HOST_EXTRACXXFLAGS += -Wno-format-diag export HOST_EXTRACXXFLAGS endif
scripts/gcc-plugins/gcc-common.h +4 -0
@@ -35,7 +35,9 @@#include "ggc.h" #include "timevar.h" +#if BUILDING_GCC_VERSION <10000 #include "params.h" +#endif #if BUILDING_GCC_VERSION <=4009 #include "pointer-set.h"
@@ -841,6 +843,7 @@ static inline gimple gimple_build_assign_with_ops(enum tree_code subcode, tree l return gimple_build_assign(lhs, subcode, op1, op2 PASS_MEM_STAT); } +#if BUILDING_GCC_VERSION <10000 template <> template <> inline bool is_a_helper<const ggoto *>::test(const_gimple gs)
@@ -854,6 +857,7 @@ inline bool is_a_helper<const greturn *>::test(const_gimple gs) {return gs->code ==GIMPLE_RETURN ; } +#endif static inline gasm *as_a_gasm (gimple stmt) {
security/apparmor/apparmorfs.c +2 -1
@@ -426,7 +426,7 @@ static ssize_t policy_update(u32 mask, const char __user *buf, size_t size,*/ error =aa_may_manage_policy (label, ns, mask);if (error) -return error; + goto end_section; data =aa_simple_write_to_buffer (buf, size, size, pos); error =PTR_ERR (data);
@@ -434,6 +434,7 @@ static ssize_t policy_update(u32 mask, const char __user *buf, size_t size, error =aa_replace_profiles (ns, label, mask, data);aa_put_loaddata (data); } +end_section:end_current_label_crit_section (label);return error;
security/integrity/evm/evm_crypto.c +1 -1
@@ -90,7 +90,7 @@ static struct shash_desc *init_desc(char type) algo = evm_hash; } -if (*tfm ==NULL ) { +if (IS_ERR_OR_NULL (*tfm)) {mutex_lock (&mutex);if (*tfm) goto out;
security/integrity/ima/ima_crypto.c +6 -6
@@ -432,7 +432,7 @@ int ima_calc_file_hash(struct file *file, struct ima_digest_data *hash)loff_t i_size;int rc;struct file *f = file; -bool new_file_instance = false, modified_flags = false; +bool new_file_instance = false, modified_mode = false;/* * For consistency, fail file's opened with the O_DIRECT flag on
@@ -452,13 +452,13 @@ int ima_calc_file_hash(struct file *file, struct ima_digest_data *hash) f =dentry_open (&file->f_path, flags, file->f_cred);if (IS_ERR (f)) {/* -* Cannot open the file again, lets modify f_flags +* Cannot open the file again, lets modify f_mode * of original and continue */ pr_info_ratelimited ("Unable to reopen file for reading.\n" ); f = file; - f->f_flags |=FMODE_READ ; - modified_flags = true; + f->f_mode |=FMODE_READ ; + modified_mode = true; }else { new_file_instance = true; }
@@ -476,8 +476,8 @@ int ima_calc_file_hash(struct file *file, struct ima_digest_data *hash) out:if (new_file_instance)fput (f); -else if (modified_flags) - f->f_flags &= ~FMODE_READ ; +else if (modified_mode) + f->f_mode &= ~FMODE_READ ;return rc; }
security/integrity/ima/ima_fs.c +1 -2
@@ -340,8 +340,7 @@ static ssize_t ima_write_policy(struct file *file, const char __user *buf,integrity_audit_msg (AUDIT_INTEGRITY_STATUS ,NULL ,NULL ,"policy_update" ,"signed policy required" ,1 ,0 ); -if (ima_appraise &IMA_APPRAISE_ENFORCE ) - result = -EACCES ; + result = -EACCES ; }else { result =ima_parse_add_rule (data); }
sound/core/pcm_lib.c +1 -0
@@ -440,6 +440,7 @@ static int snd_pcm_update_hw_ptr0(struct snd_pcm_substream *substream, no_delta_check:if (runtime->status->hw_ptr == new_hw_ptr) { + runtime->hw_ptr_jiffies = curr_jiffies;update_audio_tstamp (substream, &curr_tstamp, &audio_tstamp);return 0 ; }
sound/pci/ice1712/ice1712.c +2 -1
@@ -2377,7 +2377,8 @@ static int snd_ice1712_chip_init(struct snd_ice1712 *ice)pci_write_config_byte (ice->pci,0x61 , ice->eeprom.data[ICE_EEP1_ACLINK ]);pci_write_config_byte (ice->pci,0x62 , ice->eeprom.data[ICE_EEP1_I2SID ]);pci_write_config_byte (ice->pci,0x63 , ice->eeprom.data[ICE_EEP1_SPDIF ]); -if (ice->eeprom.subvendor !=ICE1712_SUBDEVICE_STDSP24 ) { +if (ice->eeprom.subvendor !=ICE1712_SUBDEVICE_STDSP24 && + ice->eeprom.subvendor !=ICE1712_SUBDEVICE_STAUDIO_ADCIII ) { ice->gpio.write_mask = ice->eeprom.gpiomask; ice->gpio.direction = ice->eeprom.gpiodir; snd_ice1712_write(ice, ICE1712_IREG_GPIO_WRITE_MASK,