Linux 4.9.225
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.9.225 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
------------
Documentation/networking/l2tp.txt | 8 Makefile | 2 arch/arm/include/asm/futex.h | 9 arch/arm64/kernel/machine_kexec.c | 3 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/dac/vf610_dac.c | 1 drivers/iommu/amd_iommu_init.c | 9 drivers/misc/mei/client.c | 2 drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c | 13 drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c | 6 drivers/net/ethernet/intel/igb/igb_main.c | 4 drivers/net/gtp.c | 9 drivers/nvdimm/btt.c | 8 drivers/platform/x86/alienware-wmi.c | 17 - drivers/platform/x86/asus-nb-wmi.c | 24 + drivers/rapidio/devices/rio_mport_cdev.c | 5 drivers/staging/greybus/uart.c | 4 drivers/staging/iio/accel/sca3000_ring.c | 2 drivers/staging/iio/resolver/ad2s1210.c | 17 - drivers/usb/core/message.c | 4 drivers/watchdog/watchdog_dev.c | 67 +--- fs/ceph/caps.c | 1 fs/configfs/dir.c | 1 fs/file.c | 2 fs/gfs2/glock.c | 3 include/linux/net.h | 3 include/linux/padata.h | 13 include/uapi/linux/if_pppol2tp.h | 13 include/uapi/linux/l2tp.h | 17 + kernel/padata.c | 88 ++--- lib/Makefile | 2 net/l2tp/l2tp_core.c | 174 +++-------- net/l2tp/l2tp_core.h | 46 +- net/l2tp/l2tp_eth.c | 216 ++++++++----- net/l2tp/l2tp_netlink.c | 79 ++--- net/l2tp/l2tp_ppp.c | 309 +++++++++++--------- net/socket.c | 46 ++ scripts/gcc-plugins/Makefile | 1 scripts/gcc-plugins/gcc-common.h | 4 security/integrity/evm/evm_crypto.c | 2 security/integrity/ima/ima_fs.c | 3 sound/core/pcm_lib.c | 1 47 files changed, 733 insertions(+), 568 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
Asbjørn Sloth Tønnesen (3):
net: l2tp: export debug flags to UAPI
net: l2tp: deprecate PPPOL2TP_MSG_* in favour of L2TP_MSG_*
net: l2tp: ppp: change PPPOL2TP_MSG_* => L2TP_MSG_*
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
Cao jin (1):
igb: use igb_adapter->io_addr instead of e1000_hw->hw_addr
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: dac: vf610: Fix an error handling path in 'vf610_dac_probe()'
iio: sca3000: Remove an erroneous 'get_device()'
Colin Ian King (1):
platform/x86: alienware-wmi: fix kfree on potentially uninitialized pointer
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
Frédéric Pierret (fepitre) (1):
gcc-common.h: Update for GCC 10
Greg Kroah-Hartman (1):
Linux 4.9.225
Guillaume Nault (17):
l2tp: remove useless duplicate session detection in l2tp_netlink
l2tp: remove l2tp_session_find()
l2tp: define parameters of l2tp_session_get*() as "const"
l2tp: define parameters of l2tp_tunnel_find*() as "const"
l2tp: initialise session's refcount before making it reachable
l2tp: hold tunnel while looking up sessions in l2tp_netlink
l2tp: hold tunnel while processing genl delete command
l2tp: hold tunnel while handling genl tunnel updates
l2tp: hold tunnel while handling genl TUNNEL_GET commands
l2tp: hold tunnel used while creating sessions with netlink
l2tp: prevent creation of sessions on terminated tunnels
l2tp: pass tunnel pointer to ->session_create()
l2tp: fix l2tp_eth module loading
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
Jason A. Donenfeld (1):
padata: get_next is never NULL
John Hubbard (1):
rapidio: fix an error in get_user_pages_fast() error handling
Kevin Hao (2):
i2c: dev: Fix the race between the release of i2c_dev and cdev
watchdog: Fix the race between the release of watchdog_core_data 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
Oscar Carter (1):
staging: greybus: Fix uninitialized scalar variable
Peter Zijlstra (1):
x86/uaccess, ubsan: Fix UBSAN vs. SMAP
R. Parameswaran (3):
New kernel function to get IP overhead on a socket. L2TP:Adjust intf MTU, add underlay L3, L2 hdrs.
l2tp: device MTU setup, tunnel socket needs a lock
Roberto Sassu (2):
evm: Check also if *tfm is an error pointer in init_desc()
ima: Fix return value of ima_write_policy()
Sebastian Reichel (1):
HID: multitouch: add eGalaxTouch P80H84 support
Thomas Gleixner (1):
ARM: futex: Address build warning
Tobias Klauser (1):
padata: Remove unused but set variables
Vishal Verma (1):
libnvdimm/btt: Remove unnecessary code in btt_freelist_init
Wu Bo (1):
ceph: fix double unlock in handle_cap_export()
Xiyu Yang (1):
configfs: fix config_item refcnt leak in configfs_rmdir()
Yoshiyuki Kurauchi (1):
gtp: set NLM_F_MULTI flag in gtp_genl_dump_pdp()
Greg Kroah-Hartman
maintainerDocumentation/networking/l2tp.txt +4 -4
@@ -177,10 +177,10 @@ setsockopt on the PPPoX socket to set a debug mask. The following debug mask bits are available: -PPPOL2TP_MSG_DEBUG verbose debug (if compiled in) -PPPOL2TP_MSG_CONTROL userspace - kernel interface -PPPOL2TP_MSG_SEQ sequence numbers handling -PPPOL2TP_MSG_DATA data packets +L2TP_MSG_DEBUG verbose debug (if compiled in) +L2TP_MSG_CONTROL userspace - kernel interface +L2TP_MSG_SEQ sequence numbers handling +L2TP_MSG_DATA data packets If enabled, files under a l2tp debugfs directory can be used to dump kernel state about L2TP tunnels and sessions. To access it, the
Makefile +1 -1
@@ -1,6 +1,6 @@ VERSION = 4 PATCHLEVEL = 9 -SUBLEVEL = 224 +SUBLEVEL = 225 EXTRAVERSION = NAME = Roaring Lionus
arch/arm/include/asm/futex.h +7 -2
@@ -162,8 +162,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
@@ -177,7 +177,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);
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
@@ -353,6 +353,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
@@ -1332,6 +1332,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/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
@@ -1171,8 +1171,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 ) {
@@ -1189,6 +1189,7 @@ static int __init init_iommu_from_acpi(struct amd_iommu *iommu,break ; } + uid[0 ] ='\0' ;switch (e->uidf) {case UID_NOT_PRESENT :
@@ -1203,8 +1204,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/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/net/ethernet/chelsio/cxgb4/cxgb4_main.c +11 -2
@@ -2236,8 +2236,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:
@@ -2259,6 +2257,7 @@ static void cxgb_down(struct adapter *adapter)t4_sge_stop (adapter);t4_free_sge_resources (adapter); + adapter->flags &= ~FULL_INIT_DONE ; }
@@ -4789,6 +4788,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 );
@@ -5067,6 +5069,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);
@@ -5105,6 +5108,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
@@ -719,9 +719,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 ; }
@@ -2902,6 +2899,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/ethernet/intel/igb/igb_main.c +2 -2
@@ -3395,7 +3395,7 @@ void igb_configure_tx_ring(struct igb_adapter *adapter, tdba & 0x00000000ffffffffULL);wr32 (E1000_TDBAH (reg_idx), tdba >>32 ); - ring->tail = hw->hw_addr +E1000_TDT (reg_idx); + ring->tail = adapter->io_addr +E1000_TDT (reg_idx);wr32 (E1000_TDH (reg_idx),0 );writel (0 , ring->tail);
@@ -3734,7 +3734,7 @@ void igb_configure_rx_ring(struct igb_adapter *adapter, ring->count * sizeof(union e1000_adv_rx_desc));/* initialize head and tail */ - ring->tail = hw->hw_addr +E1000_RDT (reg_idx); + ring->tail = adapter->io_addr +E1000_RDT (reg_idx);wr32 (E1000_RDH (reg_idx),0 );writel (0 , ring->tail);
drivers/net/gtp.c +5 -4
@@ -1108,11 +1108,11 @@ 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;
@@ -1208,8 +1208,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;
@@ -1252,6 +1252,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 +2 -6
@@ -447,9 +447,9 @@ static int btt_log_init(struct arena_info *arena)static int btt_freelist_init (struct arena_info *arena) { -int old, new, ret; +int new, ret;u32 i, map_entry; -struct log_entry log_new, log_old; +struct log_entry log_new; arena->freelist =kcalloc (arena->nfree,sizeof (struct free_entry ),GFP_KERNEL );
@@ -457,10 +457,6 @@ 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;
drivers/platform/x86/alienware-wmi.c +8 -9
@@ -504,23 +504,22 @@ static acpi_status alienware_wmax_command(struct wmax_basic_args *in_args, input.length = (acpi_size )sizeof (*in_args); input.pointer = in_args; -if (out_data !=NULL ) { +if (out_data) { output.length =ACPI_ALLOCATE_BUFFER ; output.pointer =NULL ; status =wmi_evaluate_method (WMAX_CONTROL_GUID ,1 , command, &input, &output); - }else +if (ACPI_SUCCESS (status)) { + obj = (union acpi_object *)output.pointer; +if (obj && obj->type ==ACPI_TYPE_INTEGER ) + *out_data = (u32 )obj->integer.value; + } +kfree (output.pointer); + }else { status =wmi_evaluate_method (WMAX_CONTROL_GUID ,1 , command, &input,NULL ); - -if (ACPI_SUCCESS (status) && out_data !=NULL ) { - obj = (union acpi_object *)output.pointer; -if (obj && obj->type ==ACPI_TYPE_INTEGER ) - *out_data = (u32 ) obj->integer.value; } -kfree (output.pointer);return status; - }/*
drivers/platform/x86/asus-nb-wmi.c +24 -0
@@ -561,9 +561,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
@@ -905,6 +905,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/staging/greybus/uart.c +2 -2
@@ -539,9 +539,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/accel/sca3000_ring.c +1 -1
@@ -56,7 +56,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" ); goto error_free_rx; }
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
@@ -1081,11 +1081,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/watchdog/watchdog_dev.c +30 -37
186 lines not on this page · raw message
fs/ceph/caps.c +1 -0
@@ -3394,6 +3394,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/file.c +1 -1
@@ -89,7 +89,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
@@ -548,9 +548,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/net.h +3 -0
@@ -298,6 +298,9 @@ int kernel_sendpage(struct socket *sock, struct page *page, int offset,int kernel_sock_ioctl (struct socket *sock,int cmd,unsigned long arg);int kernel_sock_shutdown (struct socket *sock,enum sock_shutdown_cmd how); +/* Routine returns the IP overhead imposed by a (caller-protected) socket. */ +u32 kernel_sock_ip_overhead (struct sock *sk); +#define MODULE_ALIAS_NETPROTO (proto) \ MODULE_ALIAS("net-pf-" __stringify(proto))
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; };/**
include/uapi/linux/if_pppol2tp.h +6 -7
@@ -18,6 +18,7 @@#include <linux/types.h> #include <linux/in.h> #include <linux/in6.h> +#include <linux/l2tp.h> /* Structure used to connect() the socket to a particular tunnel UDP * socket over IPv4.
@@ -90,14 +91,12 @@ enum { PPPOL2TP_SO_REORDERTO = 5, }; -/* Debug message categories for the DEBUG socket option */ +/* Debug message categories for the DEBUG socket option (deprecated) */ enum { -PPPOL2TP_MSG_DEBUG = (1 <<0 ),/* verbose debug (if -* compiled in) */ -PPPOL2TP_MSG_CONTROL = (1 <<1 ),/* userspace - kernel -* interface */ -PPPOL2TP_MSG_SEQ = (1 <<2 ),/* sequence numbers */ -PPPOL2TP_MSG_DATA = (1 <<3 ),/* data packets */ +PPPOL2TP_MSG_DEBUG =L2TP_MSG_DEBUG , +PPPOL2TP_MSG_CONTROL =L2TP_MSG_CONTROL , +PPPOL2TP_MSG_SEQ =L2TP_MSG_SEQ , +PPPOL2TP_MSG_DATA =L2TP_MSG_DATA , };
include/uapi/linux/l2tp.h +16 -1
@@ -108,7 +108,7 @@ enum {L2TP_ATTR_VLAN_ID ,/* u16 */ L2TP_ATTR_COOKIE ,/* 0, 4 or 8 bytes */ L2TP_ATTR_PEER_COOKIE ,/* 0, 4 or 8 bytes */ -L2TP_ATTR_DEBUG ,/* u32 */ +L2TP_ATTR_DEBUG ,/* u32, enum l2tp_debug_flags */ L2TP_ATTR_RECV_SEQ ,/* u8 */ L2TP_ATTR_SEND_SEQ ,/* u8 */ L2TP_ATTR_LNS_MODE, /* u8 */
@@ -175,6 +175,21 @@ enum l2tp_seqmode { L2TP_SEQ_ALL = 2, }; +/** +* enum l2tp_debug_flags - debug message categories for L2TP tunnels/sessions +* +* @L2TP_MSG_DEBUG: verbose debug (if compiled in) +* @L2TP_MSG_CONTROL: userspace - kernel interface +* @L2TP_MSG_SEQ: sequence numbers +* @L2TP_MSG_DATA: data packets +*/ +enum l2tp_debug_flags { +L2TP_MSG_DEBUG = (1 <<0 ), +L2TP_MSG_CONTROL = (1 <<1 ), +L2TP_MSG_SEQ = (1 <<2 ), +L2TP_MSG_DATA = (1 <<3 ), +}; +/* * NETLINK_GENERIC related info */
kernel/padata.c +34 -54
198 lines not on this page · raw message
lib/Makefile +2 -0
@@ -230,5 +230,7 @@ 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 +54 -120
310 lines not on this page · raw message
net/l2tp/l2tp_core.h +28 -18
87 lines not on this page · raw message
net/l2tp/l2tp_eth.c +133 -83
347 lines not on this page · raw message
net/l2tp/l2tp_netlink.c +43 -36
196 lines not on this page · raw message
net/l2tp/l2tp_ppp.c +185 -124
614 lines not on this page · raw message
net/socket.c +46 -0
49 lines not on this page · raw message
scripts/gcc-plugins/Makefile +1 -0
@@ -9,6 +9,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
@@ -31,7 +31,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"
@@ -796,6 +798,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)
@@ -809,6 +812,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/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_fs.c +1 -2
@@ -331,8 +331,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
@@ -456,6 +456,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 ; }