Linux 4.19.254
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.19.254 kernel.
All users of the 4.19 kernel series must upgrade.
The updated 4.19.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.19.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/alpha/kernel/srmcons.c | 2 arch/riscv/Makefile | 1 drivers/char/random.c | 4 drivers/gpu/drm/tilcdc/tilcdc_crtc.c | 28 ++--- drivers/gpu/drm/tilcdc/tilcdc_drv.c | 1 drivers/gpu/drm/tilcdc/tilcdc_drv.h | 2 drivers/gpu/drm/tilcdc/tilcdc_external.c | 96 ++---------------- drivers/gpu/drm/tilcdc/tilcdc_external.h | 1 drivers/gpu/drm/tilcdc/tilcdc_panel.c | 9 - drivers/gpu/drm/tilcdc/tilcdc_tfp410.c | 9 - drivers/hid/hid-ids.h | 2 drivers/hid/hid-multitouch.c | 112 ++++++++++++---------- drivers/hid/hid-quirks.c | 1 drivers/i2c/busses/i2c-cadence.c | 30 ----- drivers/net/ethernet/emulex/benet/be_cmds.c | 10 - drivers/net/ethernet/emulex/benet/be_cmds.h | 2 drivers/net/ethernet/emulex/benet/be_ethtool.c | 31 +++--- drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c | 3 drivers/net/usb/ax88179_178a.c | 16 +-- drivers/pci/controller/pci-hyperv.c | 100 ++++++++++++++++--- drivers/power/reset/arm-versatile-reboot.c | 1 drivers/s390/char/keyboard.h | 4 drivers/staging/mt7621-pinctrl/pinctrl-rt2880.c | 2 drivers/staging/speakup/spk_ttyio.c | 4 drivers/tty/cyclades.c | 6 - drivers/tty/goldfish.c | 2 drivers/tty/moxa.c | 4 drivers/tty/pty.c | 14 -- drivers/tty/serial/lpc32xx_hs.c | 2 drivers/tty/serial/mvebu-uart.c | 25 ++-- drivers/tty/tty_buffer.c | 66 ++++++++---- drivers/tty/vt/keyboard.c | 6 - drivers/tty/vt/vt.c | 2 drivers/xen/gntdev.c | 3 fs/dlm/lock.c | 3 include/linux/tty_flip.h | 4 include/net/bluetooth/bluetooth.h | 65 ++++++++++++ include/net/inet_sock.h | 5 include/net/ip.h | 4 include/net/tcp.h | 9 - kernel/bpf/core.c | 8 - kernel/events/core.c | 45 ++++++-- mm/mempolicy.c | 2 net/bluetooth/rfcomm/core.c | 50 ++++++++- net/bluetooth/rfcomm/sock.c | 46 +-------- net/bluetooth/sco.c | 30 +---- net/ipv4/af_inet.c | 2 net/ipv4/igmp.c | 23 ++-- net/ipv4/route.c | 2 net/ipv4/tcp.c | 10 + net/ipv4/tcp_fastopen.c | 4 net/ipv4/tcp_input.c | 19 ++- net/ipv4/tcp_ipv4.c | 2 net/ipv4/tcp_metrics.c | 3 net/ipv4/tcp_minisocks.c | 2 net/ipv4/tcp_output.c | 14 +- net/ipv4/tcp_recovery.c | 6 - net/ipv4/tcp_timer.c | 14 +- net/sctp/protocol.c | 2 net/tls/tls_device.c | 8 - net/xfrm/xfrm_policy.c | 5 security/integrity/ima/Kconfig | 12 -- sound/core/memalloc.c | 1 64 files changed, 554 insertions(+), 449 deletions(-)
Alexander Aring (1):
dlm: fix pending remove if msg allocation fails
Ben Dooks (1):
riscv: add as-options for modules with assembly compontents
Benjamin Tissoires (2):
HID: multitouch: simplify the application retrieval
HID: multitouch: add support for the Smart Tech panel
Demi Marie Obenour (1):
xen/gntdev: Ignore failure to unmap INVALID_GRANT_HANDLE
Eric Dumazet (1):
bpf: Make sure mac_header was set before using it
GUO Zihua (1):
ima: remove the IMA_TEMPLATE Kconfig option
Greg Kroah-Hartman (1):
Linux 4.19.254
Hangyu Hua (1):
xfrm: xfrm_policy: fix a possible double xfrm_pols_put() in xfrm_bundle_lookup()
Hristo Venev (1):
be2net: Fix buffer overflow in be_get_module_eeprom
Jason A. Donenfeld (1):
Revert "Revert "char/random: silence a lockdep splat with printk()""
Jeffrey Hugo (4):
PCI: hv: Fix multi-MSI to allow more than one MSI vector
PCI: hv: Fix hv_arch_irq_unmask() for multi-MSI
PCI: hv: Reuse existing IRTE allocation in compose_msi_msg()
PCI: hv: Fix interrupt mapping for multi-MSI
Jiri Slaby (5):
tty: drivers/tty/, stop using tty_schedule_flip()
tty: the rest, stop using tty_schedule_flip()
tty: drop tty_schedule_flip()
tty: extract tty_flip_buffer_commit() from tty_flip_buffer_push()
tty: use new tty_insert_flip_string_and_push_buffer() in pty_write()
Jose Alonso (1):
net: usb: ax88179_178a needs FLAG_SEND_ZLP
Junxiao Chang (1):
net: stmmac: fix dma queue left shift overflow issue
Jyri Sarha (1):
drm/tilcdc: Remove obsolete crtc_mode_valid() hack
Kuniyuki Iwashima (22):
ip: Fix data-races around sysctl_ip_fwd_use_pmtu.
ip: Fix data-races around sysctl_ip_nonlocal_bind.
ip: Fix a data-race around sysctl_fwmark_reflect. tcp/dccp: Fix a data-race around sysctl_tcp_fwmark_accept.
tcp: Fix data-races around sysctl_tcp_mtu_probing.
tcp: Fix a data-race around sysctl_tcp_probe_threshold.
tcp: Fix a data-race around sysctl_tcp_probe_interval.
igmp: Fix data-races around sysctl_igmp_llm_reports.
igmp: Fix a data-race around sysctl_igmp_max_memberships.
tcp: Fix data-races around sysctl_tcp_reordering.
tcp: Fix data-races around some timeout sysctl knobs.
tcp: Fix a data-race around sysctl_tcp_notsent_lowat.
tcp: Fix a data-race around sysctl_tcp_tw_reuse.
tcp: Fix data-races around sysctl_tcp_fastopen.
tcp: Fix a data-race around sysctl_tcp_early_retrans.
tcp: Fix data-races around sysctl_tcp_recovery.
tcp: Fix a data-race around sysctl_tcp_thin_linear_timeouts.
tcp: Fix data-races around sysctl_tcp_slow_start_after_idle.
tcp: Fix a data-race around sysctl_tcp_retrans_collapse.
tcp: Fix a data-race around sysctl_tcp_stdurg.
tcp: Fix a data-race around sysctl_tcp_rfc1337.
tcp: Fix data-races around sysctl_tcp_max_reordering.
Luiz Augusto von Dentz (7):
Bluetooth: Add bt_skb_sendmsg helper
Bluetooth: Add bt_skb_sendmmsg helper
Bluetooth: SCO: Replace use of memcpy_from_msg with bt_skb_sendmsg
Bluetooth: RFCOMM: Replace use of memcpy_from_msg with bt_skb_sendmmsg
Bluetooth: Fix passing NULL to PTR_ERR
Bluetooth: SCO: Fix sco_send_frame returning skb->len
Bluetooth: Fix bt_skb_sendmmsg not allocating partial chunks
Miaoqian Lin (1):
power/reset: arm-versatile: Fix refcount leak in versatile_reboot_probe
Mikael Wikström (1):
HID: multitouch: Lenovo X1 Tablet Gen3 trackpoint and buttons
Pali Rohár (1):
serial: mvebu-uart: correctly report configured baudrate value
Peter Zijlstra (1):
perf/core: Fix data race between perf_event_set_output() and perf_mmap_close()
Robert Hancock (1):
i2c: cadence: Change large transfer count reset logic to be unconditional
Takashi Iwai (1):
ALSA: memalloc: Align buffer allocations in page size
Tariq Toukan (1):
net/tls: Fix race in TLS device down flow
Tony Fischetti (1):
HID: add ALWAYS_POLL quirk to lenovo pixart mouse
Wang Cheng (1):
mm/mempolicy: fix uninit-value in mpol_rebind_policy()
William Dean (1):
pinctrl: ralink: Check for null return of devm_kcalloc
Xiaomeng Tong (1):
tilcdc: tilcdc_external: fix an incorrect NULL check on list iterator
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 19 -SUBLEVEL = 253 +SUBLEVEL = 254 EXTRAVERSION = NAME = "People's Front"
arch/alpha/kernel/srmcons.c +1 -1
@@ -59,7 +59,7 @@ srmcons_do_receive_chars(struct tty_port *port) }while ((result.bits.status &1 ) && (++loops <10 ));if (count) -tty_schedule_flip (port); +tty_flip_buffer_push (port);return count; }
arch/riscv/Makefile +1 -0
@@ -66,6 +66,7 @@ ifeq ($(CONFIG_MODULE_SECTIONS),y) endif KBUILD_CFLAGS_MODULE += $(call cc-option,-mno-relax) +KBUILD_AFLAGS_MODULE += $(call as-option,-Wa$(comma)-mno-relax) # GCC versions that support the "-mstrict-align" option default to allowing # unaligned accesses. While unaligned accesses are explicitly allowed in the
drivers/char/random.c +2 -2
@@ -183,8 +183,8 @@ static void __cold process_random_ready_list(void)#define warn_unseeded_randomness () \ if (IS_ENABLED(CONFIG_WARN_ALL_UNSEEDED_RANDOM) && !crng_ready()) \ - pr_notice("%s called from %pS with crng_init=%d\n", \ - __func__, (void *)_RET_IP_, crng_init) + printk_deferred(KERN_NOTICE "random: %s called from %pS with crng_init=%d\n", \ + __func__, (void *)_RET_IP_, crng_init)/*********************************************************************
drivers/gpu/drm/tilcdc/tilcdc_crtc.c +11 -17
@@ -657,9 +657,6 @@ static bool tilcdc_crtc_mode_fixup(struct drm_crtc *crtc,static int tilcdc_crtc_atomic_check (struct drm_crtc *crtc,struct drm_crtc_state *state) { -struct drm_display_mode *mode = &state->mode; -int ret; -/* If we are not active we don't care */ if (!state->active)return 0 ;
@@ -671,12 +668,6 @@ static int tilcdc_crtc_atomic_check(struct drm_crtc *crtc,return -EINVAL ; } - ret =tilcdc_crtc_mode_valid (crtc, mode); -if (ret) { -dev_dbg (crtc->dev->dev,"Mode \"%s\" not valid" , mode->name); -return -EINVAL ; - } -return 0 ; }
@@ -728,13 +719,6 @@ static const struct drm_crtc_funcs tilcdc_crtc_funcs = { .disable_vblank = tilcdc_crtc_disable_vblank, }; -static const struct drm_crtc_helper_funcs tilcdc_crtc_helper_funcs = { - .mode_fixup = tilcdc_crtc_mode_fixup, - .atomic_check = tilcdc_crtc_atomic_check, - .atomic_enable = tilcdc_crtc_atomic_enable, - .atomic_disable = tilcdc_crtc_atomic_disable, -}; -int tilcdc_crtc_max_width (struct drm_crtc *crtc) {struct drm_device *dev = crtc->dev;
@@ -749,7 +733,9 @@ int tilcdc_crtc_max_width(struct drm_crtc *crtc)return max_width; } -int tilcdc_crtc_mode_valid (struct drm_crtc *crtc,struct drm_display_mode *mode) +static enum drm_mode_status +tilcdc_crtc_mode_valid (struct drm_crtc *crtc, +const struct drm_display_mode *mode) {struct tilcdc_drm_private *priv = crtc->dev->dev_private;unsigned int bandwidth;
@@ -837,6 +823,14 @@ int tilcdc_crtc_mode_valid(struct drm_crtc *crtc, struct drm_display_mode *mode)return MODE_OK ; } +static const struct drm_crtc_helper_funcs tilcdc_crtc_helper_funcs = { + .mode_valid = tilcdc_crtc_mode_valid, + .mode_fixup = tilcdc_crtc_mode_fixup, + .atomic_check = tilcdc_crtc_atomic_check, + .atomic_enable = tilcdc_crtc_atomic_enable, + .atomic_disable = tilcdc_crtc_atomic_disable, +}; +void tilcdc_crtc_set_panel_info (struct drm_crtc *crtc,const struct tilcdc_panel_info *info) {
drivers/gpu/drm/tilcdc/tilcdc_drv.c +0 -1
@@ -202,7 +202,6 @@ static void tilcdc_fini(struct drm_device *dev)drm_irq_uninstall (dev);drm_mode_config_cleanup (dev); -tilcdc_remove_external_device (dev);if (priv->clk)clk_put (priv->clk);
drivers/gpu/drm/tilcdc/tilcdc_drv.h +0 -2
@@ -89,7 +89,6 @@ struct tilcdc_drm_private {struct drm_encoder *external_encoder;struct drm_connector *external_connector; -const struct drm_connector_helper_funcs *connector_funcs;bool is_registered;bool is_componentized;
@@ -171,7 +170,6 @@ void tilcdc_crtc_set_panel_info(struct drm_crtc *crtc, const struct tilcdc_panel_info *info);void tilcdc_crtc_set_simulate_vesa_sync (struct drm_crtc *crtc,bool simulate_vesa_sync); -int tilcdc_crtc_mode_valid (struct drm_crtc *crtc,struct drm_display_mode *mode);int tilcdc_crtc_max_width (struct drm_crtc *crtc);void tilcdc_crtc_shutdown (struct drm_crtc *crtc); int tilcdc_crtc_update_fb(struct drm_crtc *crtc,
drivers/gpu/drm/tilcdc/tilcdc_external.c +13 -83
137 lines not on this page · raw message
drivers/gpu/drm/tilcdc/tilcdc_external.h +0 -1
@@ -19,7 +19,6 @@#define __TILCDC_EXTERNAL_H__int tilcdc_add_component_encoder (struct drm_device *dev); -void tilcdc_remove_external_device (struct drm_device *dev);int tilcdc_get_external_components (struct device *dev,struct component_match **match);int tilcdc_attach_external_device (struct drm_device *ddev);
drivers/gpu/drm/tilcdc/tilcdc_panel.c +0 -9
@@ -174,14 +174,6 @@ static int panel_connector_get_modes(struct drm_connector *connector)return i; } -static int panel_connector_mode_valid (struct drm_connector *connector, -struct drm_display_mode *mode) -{ -struct tilcdc_drm_private *priv = connector->dev->dev_private; -/* our only constraints are what the crtc can generate: */ -return tilcdc_crtc_mode_valid (priv->crtc, mode); -} -static struct drm_encoder *panel_connector_best_encoder (struct drm_connector *connector) {
@@ -199,7 +191,6 @@ static const struct drm_connector_funcs panel_connector_funcs = {static const struct drm_connector_helper_funcs panel_connector_helper_funcs = { .get_modes = panel_connector_get_modes, - .mode_valid = panel_connector_mode_valid, .best_encoder = panel_connector_best_encoder, };
drivers/gpu/drm/tilcdc/tilcdc_tfp410.c +0 -9
@@ -183,14 +183,6 @@ static int tfp410_connector_get_modes(struct drm_connector *connector)return ret; } -static int tfp410_connector_mode_valid (struct drm_connector *connector, -struct drm_display_mode *mode) -{ -struct tilcdc_drm_private *priv = connector->dev->dev_private; -/* our only constraints are what the crtc can generate: */ -return tilcdc_crtc_mode_valid (priv->crtc, mode); -} -static struct drm_encoder *tfp410_connector_best_encoder (struct drm_connector *connector) {
@@ -209,7 +201,6 @@ static const struct drm_connector_funcs tfp410_connector_funcs = {static const struct drm_connector_helper_funcs tfp410_connector_helper_funcs = { .get_modes = tfp410_connector_get_modes, - .mode_valid = tfp410_connector_mode_valid, .best_encoder = tfp410_connector_best_encoder, };
drivers/hid/hid-ids.h +2 -0
@@ -727,6 +727,8 @@#define USB_DEVICE_ID_LENOVO_TPPRODOCK 0x6067#define USB_DEVICE_ID_LENOVO_X1_COVER 0x6085#define USB_DEVICE_ID_LENOVO_X1_TAB 0x60a3 +#define USB_DEVICE_ID_LENOVO_X1_TAB3 0x60b5 +#define USB_DEVICE_ID_LENOVO_PIXART_USB_MOUSE_608D 0x608d#define USB_VENDOR_ID_LG 0x1fd2#define USB_DEVICE_ID_LG_MULTITOUCH 0x0064
drivers/hid/hid-multitouch.c +66 -46
208 lines not on this page · raw message
drivers/hid/hid-quirks.c +1 -0
@@ -111,6 +111,7 @@ static const struct hid_device_id hid_quirks[] = { { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_MOUSEPEN_I608X_V2), HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_PENSKETCH_M912), HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_PIXART_USB_OPTICAL_MOUSE_ID2), HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_PIXART_USB_MOUSE_608D), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_C007), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_C077), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_KEYBOARD_G710_PLUS), HID_QUIRK_NOGET },
drivers/i2c/busses/i2c-cadence.c +5 -25
@@ -203,9 +203,9 @@ static inline bool cdns_is_holdquirk(struct cdns_i2c *id, bool hold_wrkaround)*/ static irqreturn_t cdns_i2c_isr (int irq,void *ptr) { -unsigned int isr_status, avail_bytes, updatetx; +unsigned int isr_status, avail_bytes;unsigned int bytes_to_send; -bool hold_quirk; +bool updatetx;struct cdns_i2c *id = ptr;/* Signal completion only after everything is updated */ int done_flag =0 ;
@@ -224,11 +224,7 @@ static irqreturn_t cdns_i2c_isr(int irq, void *ptr)* Check if transfer size register needs to be updated again for a * large data receive operation. */ - updatetx =0 ; -if (id->recv_count > id->curr_recv_count) - updatetx =1 ; - - hold_quirk = (id->quirks &CDNS_I2C_BROKEN_HOLD_BIT ) && updatetx; + updatetx = id->recv_count > id->curr_recv_count;/* When receiving, handle data interrupt and completion interrupt */ if (id->p_recv_buf &&
@@ -251,7 +247,7 @@ static irqreturn_t cdns_i2c_isr(int irq, void *ptr) id->recv_count--; id->curr_recv_count--; -if (cdns_is_holdquirk (id, hold_quirk)) +if (cdns_is_holdquirk (id, updatetx))break ; }
@@ -262,7 +258,7 @@ static irqreturn_t cdns_i2c_isr(int irq, void *ptr)* maintain transfer size non-zero while performing a large * receive operation. */ -if (cdns_is_holdquirk (id, hold_quirk)) { +if (cdns_is_holdquirk (id, updatetx)) {/* wait while fifo is full */ while (cdns_i2c_readreg (CDNS_I2C_XFER_SIZE_OFFSET ) != (id->curr_recv_count -CDNS_I2C_FIFO_DEPTH ))
@@ -284,22 +280,6 @@ static irqreturn_t cdns_i2c_isr(int irq, void *ptr) CDNS_I2C_XFER_SIZE_OFFSET); id->curr_recv_count = id->recv_count; } - }else if (id->recv_count && !hold_quirk && - !id->curr_recv_count) { - -/* Set the slave address in address register*/ -cdns_i2c_writereg (id->p_msg->addr &CDNS_I2C_ADDR_MASK , -CDNS_I2C_ADDR_OFFSET ); - -if (id->recv_count >CDNS_I2C_TRANSFER_SIZE ) { -cdns_i2c_writereg (CDNS_I2C_TRANSFER_SIZE , -CDNS_I2C_XFER_SIZE_OFFSET ); - id->curr_recv_count =CDNS_I2C_TRANSFER_SIZE ; - }else { -cdns_i2c_writereg (id->recv_count, -CDNS_I2C_XFER_SIZE_OFFSET ); - id->curr_recv_count = id->recv_count; - } }/* Clear hold (if not repeated start) and signal completion */
drivers/net/ethernet/emulex/benet/be_cmds.c +5 -5
@@ -2291,7 +2291,7 @@ int be_cmd_get_beacon_state(struct be_adapter *adapter, u8 port_num, u32 *state)/* Uses sync mcc */ int be_cmd_read_port_transceiver_data (struct be_adapter *adapter, -u8 page_num,u8 *data) +u8 page_num,u32 off,u32 len,u8 *data) {struct be_dma_mem cmd;struct be_mcc_wrb *wrb;
@@ -2325,10 +2325,10 @@ int be_cmd_read_port_transceiver_data(struct be_adapter *adapter, req->port =cpu_to_le32 (adapter->hba_port_num); req->page_num =cpu_to_le32 (page_num); status =be_mcc_notify_wait (adapter); -if (!status) { +if (!status && len >0 ) {struct be_cmd_resp_port_type *resp = cmd.va; -memcpy (data, resp->page_data,PAGE_DATA_LEN ); +memcpy (data, resp->page_data + off, len); } err:mutex_unlock (&adapter->mcc_lock);
@@ -2419,7 +2419,7 @@ int be_cmd_query_cable_type(struct be_adapter *adapter)int status; status =be_cmd_read_port_transceiver_data (adapter,TR_PAGE_A0 , - page_data); +0 ,PAGE_DATA_LEN , page_data);if (!status) {switch (adapter->phy.interface_type) {case PHY_TYPE_QSFP :
@@ -2444,7 +2444,7 @@ int be_cmd_query_sfp_info(struct be_adapter *adapter)int status; status =be_cmd_read_port_transceiver_data (adapter,TR_PAGE_A0 , - page_data); +0 ,PAGE_DATA_LEN , page_data);if (!status) {strlcpy (adapter->phy.vendor_name, page_data +SFP_VENDOR_NAME_OFFSET ,SFP_VENDOR_NAME_LEN -1 );
drivers/net/ethernet/emulex/benet/be_cmds.h +1 -1
@@ -2431,7 +2431,7 @@ int be_cmd_set_beacon_state(struct be_adapter *adapter, u8 port_num, u8 beacon,int be_cmd_get_beacon_state (struct be_adapter *adapter,u8 port_num,u32 *state);int be_cmd_read_port_transceiver_data (struct be_adapter *adapter, -u8 page_num,u8 *data); +u8 page_num,u32 off,u32 len,u8 *data);int be_cmd_query_cable_type (struct be_adapter *adapter);int be_cmd_query_sfp_info (struct be_adapter *adapter); int lancer_cmd_read_object(struct be_adapter *adapter, struct be_dma_mem *cmd,
drivers/net/ethernet/emulex/benet/be_ethtool.c +19 -12
@@ -1342,7 +1342,7 @@ static int be_get_module_info(struct net_device *netdev,return -EOPNOTSUPP ; status =be_cmd_read_port_transceiver_data (adapter,TR_PAGE_A0 , - page_data); +0 ,PAGE_DATA_LEN , page_data);if (!status) {if (!page_data[SFP_PLUS_SFF_8472_COMP ]) { modinfo->type =ETH_MODULE_SFF_8079 ;
@@ -1360,25 +1360,32 @@ static int be_get_module_eeprom(struct net_device *netdev, {struct be_adapter *adapter =netdev_priv (netdev);int status; +u32 begin, end;if (!check_privilege (adapter,MAX_PRIVILEGES ))return -EOPNOTSUPP ; - status =be_cmd_read_port_transceiver_data (adapter,TR_PAGE_A0 , - data); -if (status) - goto err; + begin = eeprom->offset; + end = eeprom->offset + eeprom->len; + +if (begin <PAGE_DATA_LEN ) { + status =be_cmd_read_port_transceiver_data (adapter,TR_PAGE_A0 , begin, +min_t (u32, end,PAGE_DATA_LEN ) - begin, + data); +if (status) + goto err; + + data +=PAGE_DATA_LEN - begin; + begin =PAGE_DATA_LEN ; + } -if (eeprom->offset + eeprom->len >PAGE_DATA_LEN ) { - status =be_cmd_read_port_transceiver_data (adapter, -TR_PAGE_A2 , - data + -PAGE_DATA_LEN ); +if (end >PAGE_DATA_LEN ) { + status =be_cmd_read_port_transceiver_data (adapter,TR_PAGE_A2 , + begin -PAGE_DATA_LEN , + end - begin, data);if (status) goto err; } -if (eeprom->offset) -memcpy (data, data + eeprom->offset, eeprom->len); err:return be_cmd_status (status); }
drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c +3 -0
@@ -222,6 +222,9 @@ static void dwmac4_map_mtl_dma(struct mac_device_info *hw, u32 queue, u32 chan)if (queue ==0 || queue ==4 ) { value &= ~MTL_RXQ_DMA_Q04MDMACH_MASK ; value |=MTL_RXQ_DMA_Q04MDMACH (chan); + }else if (queue >4 ) { + value &= ~MTL_RXQ_DMA_QXMDMACH_MASK (queue -4 ); + value |=MTL_RXQ_DMA_QXMDMACH (chan, queue -4 ); }else { value &= ~MTL_RXQ_DMA_QXMDMACH_MASK (queue); value |=MTL_RXQ_DMA_QXMDMACH (chan, queue);
drivers/net/usb/ax88179_178a.c +8 -8
@@ -1706,7 +1706,7 @@ static const struct driver_info ax88179_info = { .link_reset = ax88179_link_reset, .reset = ax88179_reset, .stop = ax88179_stop, - .flags = FLAG_ETHER | FLAG_FRAMING_AX, + .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_SEND_ZLP, .rx_fixup = ax88179_rx_fixup, .tx_fixup = ax88179_tx_fixup, };
@@ -1719,7 +1719,7 @@ static const struct driver_info ax88178a_info = { .link_reset = ax88179_link_reset, .reset = ax88179_reset, .stop = ax88179_stop, - .flags = FLAG_ETHER | FLAG_FRAMING_AX, + .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_SEND_ZLP, .rx_fixup = ax88179_rx_fixup, .tx_fixup = ax88179_tx_fixup, };
@@ -1732,7 +1732,7 @@ static const struct driver_info cypress_GX3_info = { .link_reset = ax88179_link_reset, .reset = ax88179_reset, .stop = ax88179_stop, - .flags = FLAG_ETHER | FLAG_FRAMING_AX, + .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_SEND_ZLP, .rx_fixup = ax88179_rx_fixup, .tx_fixup = ax88179_tx_fixup, };
@@ -1745,7 +1745,7 @@ static const struct driver_info dlink_dub1312_info = { .link_reset = ax88179_link_reset, .reset = ax88179_reset, .stop = ax88179_stop, - .flags = FLAG_ETHER | FLAG_FRAMING_AX, + .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_SEND_ZLP, .rx_fixup = ax88179_rx_fixup, .tx_fixup = ax88179_tx_fixup, };
@@ -1758,7 +1758,7 @@ static const struct driver_info sitecom_info = { .link_reset = ax88179_link_reset, .reset = ax88179_reset, .stop = ax88179_stop, - .flags = FLAG_ETHER | FLAG_FRAMING_AX, + .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_SEND_ZLP, .rx_fixup = ax88179_rx_fixup, .tx_fixup = ax88179_tx_fixup, };
@@ -1771,7 +1771,7 @@ static const struct driver_info samsung_info = { .link_reset = ax88179_link_reset, .reset = ax88179_reset, .stop = ax88179_stop, - .flags = FLAG_ETHER | FLAG_FRAMING_AX, + .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_SEND_ZLP, .rx_fixup = ax88179_rx_fixup, .tx_fixup = ax88179_tx_fixup, };
@@ -1784,7 +1784,7 @@ static const struct driver_info lenovo_info = { .link_reset = ax88179_link_reset, .reset = ax88179_reset, .stop = ax88179_stop, - .flags = FLAG_ETHER | FLAG_FRAMING_AX, + .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_SEND_ZLP, .rx_fixup = ax88179_rx_fixup, .tx_fixup = ax88179_tx_fixup, };
@@ -1797,7 +1797,7 @@ static const struct driver_info belkin_info = { .link_reset = ax88179_link_reset, .reset = ax88179_reset, .stop = ax88179_stop, - .flags = FLAG_ETHER | FLAG_FRAMING_AX, + .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_SEND_ZLP, .rx_fixup = ax88179_rx_fixup, .tx_fixup = ax88179_tx_fixup, };
drivers/pci/controller/pci-hyperv.c +82 -18
198 lines not on this page · raw message
drivers/power/reset/arm-versatile-reboot.c +1 -0
@@ -150,6 +150,7 @@ static int __init versatile_reboot_probe(void) versatile_reboot_type = (enum versatile_reboot )reboot_id->data; syscon_regmap =syscon_node_to_regmap (np); +of_node_put (np);if (IS_ERR (syscon_regmap))return PTR_ERR (syscon_regmap);
drivers/s390/char/keyboard.h +2 -2
@@ -56,7 +56,7 @@ static inline void kbd_put_queue(struct tty_port *port, int ch) { tty_insert_flip_char(port, ch, 0); -tty_schedule_flip (port); +tty_flip_buffer_push (port); } static inline void
@@ -64,5 +64,5 @@ kbd_puts_queue(struct tty_port *port, char *cp) {while (*cp)tty_insert_flip_char (port, *cp++,0 ); -tty_schedule_flip (port); +tty_flip_buffer_push (port); }
drivers/staging/mt7621-pinctrl/pinctrl-rt2880.c +2 -0
@@ -267,6 +267,8 @@ static int rt2880_pinmux_pins(struct rt2880_priv *p) p->func[i]->pin_count,sizeof (int ), GFP_KERNEL); +if (!p->func[i]->pins) +return -ENOMEM ;for (j =0 ; j < p->func[i]->pin_count; j++) p->func[i]->pins[j] = p->func[i]->pin_first + j;
drivers/staging/speakup/spk_ttyio.c +2 -2
@@ -88,7 +88,7 @@ static int spk_ttyio_receive_buf2(struct tty_struct *tty, }if (!ldisc_data->buf_free) -/* ttyio_in will tty_schedule_flip */ +/* ttyio_in will tty_flip_buffer_push */ return 0 ;/* Make sure the consumer has read buf before we have seen
@@ -321,7 +321,7 @@ static unsigned char ttyio_in(int timeout)mb (); ldisc_data->buf_free = true;/* Let TTY push more characters */ -tty_schedule_flip (speakup_tty->port); +tty_flip_buffer_push (speakup_tty->port);return rv; }
drivers/tty/cyclades.c +3 -3
@@ -556,7 +556,7 @@ static void cyy_chip_rx(struct cyclades_card *cinfo, int chip, } info->idle_stats.recv_idle = jiffies; } -tty_schedule_flip (port); +tty_flip_buffer_push (port);/* end of service */ cyy_writeb (info, CyRIR, save_xir &0x3f );
@@ -996,7 +996,7 @@ static void cyz_handle_rx(struct cyclades_port *info)mod_timer (&info->rx_full_timer, jiffies +1 );#endif info->idle_stats.recv_idle = jiffies; -tty_schedule_flip (&info->port); +tty_flip_buffer_push (&info->port);/* Update rx_get */ cy_writel (&buf_ctrl->rx_get, new_rx_get);
@@ -1172,7 +1172,7 @@ static void cyz_handle_cmd(struct cyclades_card *cinfo)if (delta_count)wake_up_interruptible (&info->port.delta_msr_wait);if (special_count) -tty_schedule_flip (&info->port); +tty_flip_buffer_push (&info->port); } }
drivers/tty/goldfish.c +1 -1
@@ -151,7 +151,7 @@ static irqreturn_t goldfish_tty_interrupt(int irq, void *dev_id) address = (unsigned long )(void *)buf;goldfish_tty_rw (qtty, address, count,0 ); -tty_schedule_flip (&qtty->port); +tty_flip_buffer_push (&qtty->port);return IRQ_HANDLED ; }
drivers/tty/moxa.c +2 -2
@@ -1393,7 +1393,7 @@ static int moxa_poll_port(struct moxa_port *p, unsigned int handle,if (inited && !tty_throttled (tty) &&MoxaPortRxQueue (p) >0 ) {/* RX */ MoxaPortReadData (p); -tty_schedule_flip (&p->port); +tty_flip_buffer_push (&p->port); } }else {clear_bit (EMPTYWAIT , &p->statusflags);
@@ -1418,7 +1418,7 @@ static int moxa_poll_port(struct moxa_port *p, unsigned int handle,if (tty && (intr & IntrBreak) && !I_IGNBRK (tty)) {/* BREAK */ tty_insert_flip_char (&p->port,0 ,TTY_BREAK ); -tty_schedule_flip (&p->port); +tty_flip_buffer_push (&p->port); }if (intr & IntrLine)
drivers/tty/pty.c +2 -12
@@ -111,21 +111,11 @@ static void pty_unthrottle(struct tty_struct *tty)static int pty_write (struct tty_struct *tty,const unsigned char *buf,int c) {struct tty_struct *to = tty->link; -unsigned long flags; -if (tty->stopped) +if (tty->stopped || !c)return 0 ; -if (c >0 ) { -spin_lock_irqsave (&to->port->lock, flags); -/* Stuff the data into the input queue of the other end */ - c =tty_insert_flip_string (to->port, buf, c); -spin_unlock_irqrestore (&to->port->lock, flags); -/* And shovel */ -if (c) -tty_flip_buffer_push (to->port); - } -return c; +return tty_insert_flip_string_and_push_buffer (to->port, buf, c); }/**
drivers/tty/serial/lpc32xx_hs.c +1 -1
@@ -341,7 +341,7 @@ static irqreturn_t serial_lpc32xx_interrupt(int irq, void *dev_id) LPC32XX_HSUART_IIR(port->membase)); port->icount.overrun++;tty_insert_flip_char (tport,0 ,TTY_OVERRUN ); -tty_schedule_flip (tport); +tty_flip_buffer_push (tport); }/* Data received? */
drivers/tty/serial/mvebu-uart.c +13 -12
@@ -442,14 +442,14 @@ static void mvebu_uart_shutdown(struct uart_port *port) } } -static int mvebu_uart_baud_rate_set (struct uart_port *port,unsigned int baud) +static unsigned int mvebu_uart_baud_rate_set (struct uart_port *port,unsigned int baud) {struct mvebu_uart *mvuart =to_mvuart (port);unsigned int d_divisor, m_divisor;u32 brdv;if (IS_ERR (mvuart->clk)) -return -PTR_ERR (mvuart->clk); +return 0 ;/* * The baudrate is derived from the UART clock thanks to two divisors:
@@ -469,7 +469,7 @@ static int mvebu_uart_baud_rate_set(struct uart_port *port, unsigned int baud) brdv |= d_divisor;writel (brdv, port->membase +UART_BRDV ); -return 0 ; +return DIV_ROUND_CLOSEST (port->uartclk, d_divisor * m_divisor); } static void mvebu_uart_set_termios(struct uart_port *port,
@@ -506,15 +506,11 @@ static void mvebu_uart_set_termios(struct uart_port *port, max_baud =230400 ; baud =uart_get_baud_rate (port, termios, old, min_baud, max_baud); -if (mvebu_uart_baud_rate_set (port, baud)) { -/* No clock available, baudrate cannot be changed */ -if (old) - baud =uart_get_baud_rate (port, old,NULL , - min_baud, max_baud); - }else { -tty_termios_encode_baud_rate (termios, baud, baud); -uart_update_timeout (port, termios->c_cflag, baud); - } + baud =mvebu_uart_baud_rate_set (port, baud); + +/* In case baudrate cannot be changed, report previous old value */ +if (baud ==0 && old) + baud =tty_termios_baud_rate (old);/* Only the following flag changes are supported */ if (old) {
@@ -525,6 +521,11 @@ static void mvebu_uart_set_termios(struct uart_port *port, termios->c_cflag |=CS8 ; } +if (baud !=0 ) { +tty_termios_encode_baud_rate (termios, baud, baud); +uart_update_timeout (port, termios->c_cflag, baud); + } +spin_unlock_irqrestore (&port->lock, flags); }
drivers/tty/tty_buffer.c +44 -22
87 lines not on this page · raw message
drivers/tty/vt/keyboard.c +3 -3
@@ -310,7 +310,7 @@ int kbd_rate(struct kbd_repeat *rpt)static void put_queue (struct vc_data *vc,int ch) {tty_insert_flip_char (&vc->port, ch,0 ); -tty_schedule_flip (&vc->port); +tty_flip_buffer_push (&vc->port); }static void puts_queue (struct vc_data *vc,char *cp)
@@ -319,7 +319,7 @@ static void puts_queue(struct vc_data *vc, char *cp)tty_insert_flip_char (&vc->port, *cp,0 ); cp++; } -tty_schedule_flip (&vc->port); +tty_flip_buffer_push (&vc->port); }static void applkey (struct vc_data *vc,int key,char mode)
@@ -564,7 +564,7 @@ static void fn_inc_console(struct vc_data *vc)static void fn_send_intr (struct vc_data *vc) {tty_insert_flip_char (&vc->port,0 ,TTY_BREAK ); -tty_schedule_flip (&vc->port); +tty_flip_buffer_push (&vc->port); }static void fn_scroll_forw (struct vc_data *vc)
drivers/tty/vt/vt.c +1 -1
@@ -1838,7 +1838,7 @@ static void respond_string(const char *p, struct tty_port *port)tty_insert_flip_char (port, *p,0 ); p++; } -tty_schedule_flip (port); +tty_flip_buffer_push (port); }static void cursor_report (struct vc_data *vc,struct tty_struct *tty)
drivers/xen/gntdev.c +2 -1
@@ -416,7 +416,8 @@ static void __unmap_grant_pages_done(int result,unsigned int offset = data->unmap_ops - map->unmap_ops;for (i =0 ; i < data->count; i++) { -WARN_ON (map->unmap_ops[offset+i].status); +WARN_ON (map->unmap_ops[offset+i].status && + map->unmap_ops[offset+i].handle !=-1 );pr_debug ("unmap handle=%d st=%d\n" , map->unmap_ops[offset+i].handle, map->unmap_ops[offset+i].status);
fs/dlm/lock.c +2 -1
@@ -4069,13 +4069,14 @@ static void send_repeat_remove(struct dlm_ls *ls, char *ms_name, int len) rv =_create_message (ls,sizeof (struct dlm_message ) + len, dir_nodeid,DLM_MSG_REMOVE , &ms, &mh);if (rv) -return ; + goto out;memcpy (ms->m_extra, name, len); ms->m_hash = hash;send_message (mh, ms); +out:spin_lock (&ls->ls_remove_spin); ls->ls_remove_len =0 ;memset (ls->ls_remove_name,0 ,DLM_RESNAME_MAXLEN );
include/linux/tty_flip.h +3 -1
@@ -12,7 +12,6 @@ extern int tty_insert_flip_string_fixed_flag(struct tty_port *port,extern int tty_prepare_flip_string (struct tty_port *port,unsigned char **chars,size_t size);extern void tty_flip_buffer_push (struct tty_port *port); -void tty_schedule_flip (struct tty_port *port);int __tty_insert_flip_char (struct tty_port *port,unsigned char ch,char flag); static inline int tty_insert_flip_char(struct tty_port *port,
@@ -40,4 +39,7 @@ static inline int tty_insert_flip_string(struct tty_port *port,extern void tty_buffer_lock_exclusive (struct tty_port *port);extern void tty_buffer_unlock_exclusive (struct tty_port *port); +int tty_insert_flip_string_and_push_buffer (struct tty_port *port, +const unsigned char *chars,size_t cnt); +#endif /* _LINUX_TTY_FLIP_H */
include/net/bluetooth/bluetooth.h +65 -0
71 lines not on this page · raw message
include/net/inet_sock.h +3 -2
@@ -111,7 +111,8 @@ static inline struct inet_request_sock *inet_rsk(const struct request_sock *sk)static inline u32 inet_request_mark (const struct sock *sk,struct sk_buff *skb) { -if (!sk->sk_mark &&sock_net (sk)->ipv4.sysctl_tcp_fwmark_accept) +if (!sk->sk_mark && +READ_ONCE (sock_net (sk)->ipv4.sysctl_tcp_fwmark_accept))return skb->mark;return sk->sk_mark;
@@ -357,7 +358,7 @@ static inline bool inet_get_convert_csum(struct sock *sk)static inline bool inet_can_nonlocal_bind (struct net *net,struct inet_sock *inet) { -return net->ipv4.sysctl_ip_nonlocal_bind || +return READ_ONCE (net->ipv4.sysctl_ip_nonlocal_bind) || inet->freebind || inet->transparent; }
include/net/ip.h +2 -2
@@ -341,7 +341,7 @@ void ipfrag_init(void);void ip_static_sysctl_init (void );#define IP4_REPLY_MARK (net, mark) \ - ((net)->ipv4.sysctl_fwmark_reflect ? (mark) : 0) + (READ_ONCE((net)->ipv4.sysctl_fwmark_reflect) ? (mark) : 0)static inline bool ip_is_fragment (const struct iphdr *iph) {
@@ -402,7 +402,7 @@ static inline unsigned int ip_dst_mtu_maybe_forward(const struct dst_entry *dst,struct net *net =dev_net (dst->dev);unsigned int mtu; -if (net->ipv4.sysctl_ip_fwd_use_pmtu || +if (READ_ONCE (net->ipv4.sysctl_ip_fwd_use_pmtu) ||ip_mtu_locked (dst) || !forwarding)return dst_mtu (dst);
include/net/tcp.h +5 -4
@@ -1339,8 +1339,8 @@ static inline void tcp_slow_start_after_idle_check(struct sock *sk)struct tcp_sock *tp =tcp_sk (sk);s32 delta; -if (!sock_net (sk)->ipv4.sysctl_tcp_slow_start_after_idle || tp->packets_out || - ca_ops->cong_control) +if (!READ_ONCE (sock_net (sk)->ipv4.sysctl_tcp_slow_start_after_idle) || + tp->packets_out || ca_ops->cong_control)return ; delta = tcp_jiffies32 - tp->lsndtime;if (delta >inet_csk (sk)->icsk_rto)
@@ -1430,7 +1430,8 @@ static inline u32 keepalive_time_elapsed(const struct tcp_sock *tp)static inline int tcp_fin_time (const struct sock *sk) { -int fin_timeout =tcp_sk (sk)->linger2 ? :sock_net (sk)->ipv4.sysctl_tcp_fin_timeout; +int fin_timeout =tcp_sk (sk)->linger2 ? : +READ_ONCE (sock_net (sk)->ipv4.sysctl_tcp_fin_timeout);const int rto =inet_csk (sk)->icsk_rto;if (fin_timeout < (rto <<2 ) - (rto >>1 ))
@@ -1875,7 +1876,7 @@ void __tcp_v4_send_check(struct sk_buff *skb, __be32 saddr, __be32 daddr);static inline u32 tcp_notsent_lowat (const struct tcp_sock *tp) {struct net *net =sock_net ((struct sock *)tp); -return tp->notsent_lowat ?: net->ipv4.sysctl_tcp_notsent_lowat; +return tp->notsent_lowat ?:READ_ONCE (net->ipv4.sysctl_tcp_notsent_lowat); }static inline bool tcp_stream_memory_free (const struct sock *sk)
kernel/bpf/core.c +5 -3
@@ -66,11 +66,13 @@ void *bpf_internal_load_pointer_neg_helper(const struct sk_buff *skb, int k, uns {u8 *ptr =NULL ; -if (k >=SKF_NET_OFF ) +if (k >=SKF_NET_OFF ) { ptr =skb_network_header (skb) + k -SKF_NET_OFF ; -else if (k >=SKF_LL_OFF ) + }else if (k >=SKF_LL_OFF ) { +if (unlikely (!skb_mac_header_was_set (skb))) +return NULL ; ptr =skb_mac_header (skb) + k -SKF_LL_OFF ; - + }if (ptr >= skb->head && ptr + size <=skb_tail_pointer (skb))return ptr;
kernel/events/core.c +31 -14
89 lines not on this page · raw message
mm/mempolicy.c +1 -1
@@ -348,7 +348,7 @@ static void mpol_rebind_preferred(struct mempolicy *pol,*/ static void mpol_rebind_policy (struct mempolicy *pol,const nodemask_t *newmask) { -if (!pol) +if (!pol || pol->mode ==MPOL_LOCAL )return ;if (!mpol_store_user_nodemask (pol) && !(pol->flags &MPOL_F_LOCAL ) &&nodes_equal (pol->w.cpuset_mems_allowed, *newmask))
net/bluetooth/rfcomm/core.c +43 -7
65 lines not on this page · raw message
net/bluetooth/rfcomm/sock.c +10 -36
56 lines not on this page · raw message
net/bluetooth/sco.c +10 -20
@@ -279,12 +279,10 @@ static int sco_connect(struct hci_dev *hdev, struct sock *sk)return err; } -static int sco_send_frame (struct sock *sk,void *buf,int len, -unsigned int msg_flags) +static int sco_send_frame (struct sock *sk,struct sk_buff *skb) {struct sco_conn *conn =sco_pi (sk)->conn; -struct sk_buff *skb; -int err; +int len = skb->len;/* Check outgoing MTU */ if (len > conn->mtu)
@@ -292,11 +290,6 @@ static int sco_send_frame(struct sock *sk, void *buf, int len,BT_DBG ("sk %p len %d" , sk, len); - skb =bt_skb_send_alloc (sk, len, msg_flags &MSG_DONTWAIT , &err); -if (!skb) -return err; - -memcpy (skb_put (skb, len), buf, len);hci_send_sco (conn->hcon, skb);return len;
@@ -715,7 +708,7 @@ static int sco_sock_sendmsg(struct socket *sock, struct msghdr *msg, size_t len) {struct sock *sk = sock->sk; -void *buf; +struct sk_buff *skb;int err;BT_DBG ("sock %p, sk %p" , sock, sk);
@@ -727,24 +720,21 @@ static int sco_sock_sendmsg(struct socket *sock, struct msghdr *msg,if (msg->msg_flags &MSG_OOB )return -EOPNOTSUPP ; - buf =kmalloc (len,GFP_KERNEL ); -if (!buf) -return -ENOMEM ; - -if (memcpy_from_msg (buf, msg, len)) { -kfree (buf); -return -EFAULT ; - } + skb =bt_skb_sendmsg (sk, msg, len, len,0 ,0 ); +if (IS_ERR (skb)) +return PTR_ERR (skb);lock_sock (sk);if (sk->sk_state ==BT_CONNECTED ) - err =sco_send_frame (sk, buf, len, msg->msg_flags); + err =sco_send_frame (sk, skb);else err = -ENOTCONN ;release_sock (sk); -kfree (buf); + +if (err <0 ) +kfree_skb (skb);return err; }
net/ipv4/af_inet.c +1 -1
@@ -218,7 +218,7 @@ int inet_listen(struct socket *sock, int backlog)* because the socket was in TCP_LISTEN state previously but * was shutdown() rather than close(). */ - tcp_fastopen =sock_net (sk)->ipv4.sysctl_tcp_fastopen; + tcp_fastopen =READ_ONCE (sock_net (sk)->ipv4.sysctl_tcp_fastopen);if ((tcp_fastopen &TFO_SERVER_WO_SOCKOPT1 ) && (tcp_fastopen &TFO_SERVER_ENABLE ) && !inet_csk (sk)->icsk_accept_queue.fastopenq.max_qlen) {
net/ipv4/igmp.c +14 -9
@@ -471,7 +471,8 @@ static struct sk_buff *add_grec(struct sk_buff *skb, struct ip_mc_list *pmc,if (pmc->multiaddr ==IGMP_ALL_HOSTS )return skb; -if (ipv4_is_local_multicast (pmc->multiaddr) && !net->ipv4.sysctl_igmp_llm_reports) +if (ipv4_is_local_multicast (pmc->multiaddr) && + !READ_ONCE (net->ipv4.sysctl_igmp_llm_reports))return skb; mtu =READ_ONCE (dev->mtu);
@@ -597,7 +598,7 @@ static int igmpv3_send_report(struct in_device *in_dev, struct ip_mc_list *pmc)if (pmc->multiaddr ==IGMP_ALL_HOSTS )continue ;if (ipv4_is_local_multicast (pmc->multiaddr) && - !net->ipv4.sysctl_igmp_llm_reports) + !READ_ONCE (net->ipv4.sysctl_igmp_llm_reports))continue ;spin_lock_bh (&pmc->lock);if (pmc->sfcount[MCAST_EXCLUDE ])
@@ -740,7 +741,8 @@ static int igmp_send_report(struct in_device *in_dev, struct ip_mc_list *pmc,if (type ==IGMPV3_HOST_MEMBERSHIP_REPORT )return igmpv3_send_report (in_dev, pmc); -if (ipv4_is_local_multicast (group) && !net->ipv4.sysctl_igmp_llm_reports) +if (ipv4_is_local_multicast (group) && + !READ_ONCE (net->ipv4.sysctl_igmp_llm_reports))return 0 ;if (type ==IGMP_HOST_LEAVE_MESSAGE )
@@ -924,7 +926,8 @@ static bool igmp_heard_report(struct in_device *in_dev, __be32 group)if (group ==IGMP_ALL_HOSTS )return false; -if (ipv4_is_local_multicast (group) && !net->ipv4.sysctl_igmp_llm_reports) +if (ipv4_is_local_multicast (group) && + !READ_ONCE (net->ipv4.sysctl_igmp_llm_reports))return false;rcu_read_lock ();
@@ -1049,7 +1052,7 @@ static bool igmp_heard_query(struct in_device *in_dev, struct sk_buff *skb,if (im->multiaddr ==IGMP_ALL_HOSTS )continue ;if (ipv4_is_local_multicast (im->multiaddr) && - !net->ipv4.sysctl_igmp_llm_reports) + !READ_ONCE (net->ipv4.sysctl_igmp_llm_reports))continue ;spin_lock_bh (&im->lock);if (im->tm_running)
@@ -1299,7 +1302,8 @@ static void igmp_group_dropped(struct ip_mc_list *im)#ifdef CONFIG_IP_MULTICAST if (im->multiaddr ==IGMP_ALL_HOSTS )return ; -if (ipv4_is_local_multicast (im->multiaddr) && !net->ipv4.sysctl_igmp_llm_reports) +if (ipv4_is_local_multicast (im->multiaddr) && + !READ_ONCE (net->ipv4.sysctl_igmp_llm_reports))return ; reporter = im->reporter;
@@ -1336,7 +1340,8 @@ static void igmp_group_added(struct ip_mc_list *im)#ifdef CONFIG_IP_MULTICAST if (im->multiaddr ==IGMP_ALL_HOSTS )return ; -if (ipv4_is_local_multicast (im->multiaddr) && !net->ipv4.sysctl_igmp_llm_reports) +if (ipv4_is_local_multicast (im->multiaddr) && + !READ_ONCE (net->ipv4.sysctl_igmp_llm_reports))return ;if (in_dev->dead)
@@ -1657,7 +1662,7 @@ static void ip_mc_rejoin_groups(struct in_device *in_dev)if (im->multiaddr ==IGMP_ALL_HOSTS )continue ;if (ipv4_is_local_multicast (im->multiaddr) && - !net->ipv4.sysctl_igmp_llm_reports) + !READ_ONCE (net->ipv4.sysctl_igmp_llm_reports))continue ;/* a failover is happening and switches
@@ -2207,7 +2212,7 @@ static int __ip_mc_join_group(struct sock *sk, struct ip_mreqn *imr, count++; } err = -ENOBUFS ; -if (count >= net->ipv4.sysctl_igmp_max_memberships) +if (count >=READ_ONCE (net->ipv4.sysctl_igmp_max_memberships)) goto done; iml =sock_kmalloc (sk,sizeof (*iml),GFP_KERNEL );if (!iml)
net/ipv4/route.c +1 -1
@@ -1419,7 +1419,7 @@ u32 ip_mtu_from_fib_result(struct fib_result *res, __be32 daddr)struct net_device *dev = nh->nh_dev;u32 mtu =0 ; -if (dev_net (dev)->ipv4.sysctl_ip_fwd_use_pmtu || +if (READ_ONCE (dev_net (dev)->ipv4.sysctl_ip_fwd_use_pmtu) || fi->fib_metrics->metrics[RTAX_LOCK -1 ] & (1 <<RTAX_MTU )) mtu = fi->fib_mtu;
net/ipv4/tcp.c +6 -4
@@ -436,7 +436,7 @@ void tcp_init_sock(struct sock *sk) tp->snd_cwnd_clamp = ~0 ; tp->mss_cache =TCP_MSS_DEFAULT ; - tp->reordering =sock_net (sk)->ipv4.sysctl_tcp_reordering; + tp->reordering =READ_ONCE (sock_net (sk)->ipv4.sysctl_tcp_reordering);tcp_assign_congestion_control (sk); tp->tsoffset =0 ;
@@ -1160,7 +1160,8 @@ static int tcp_sendmsg_fastopen(struct sock *sk, struct msghdr *msg,struct sockaddr *uaddr = msg->msg_name;int err, flags; -if (!(sock_net (sk)->ipv4.sysctl_tcp_fastopen &TFO_CLIENT_ENABLE ) || +if (!(READ_ONCE (sock_net (sk)->ipv4.sysctl_tcp_fastopen) & +TFO_CLIENT_ENABLE ) || (uaddr && msg->msg_namelen >=sizeof (uaddr->sa_family) && uaddr->sa_family ==AF_UNSPEC ))return -EOPNOTSUPP ;
@@ -3056,7 +3057,8 @@ static int do_tcp_setsockopt(struct sock *sk, int level,case TCP_FASTOPEN_CONNECT :if (val >1 || val <0 ) { err = -EINVAL ; - }else if (net->ipv4.sysctl_tcp_fastopen &TFO_CLIENT_ENABLE ) { + }else if (READ_ONCE (net->ipv4.sysctl_tcp_fastopen) & +TFO_CLIENT_ENABLE ) {if (sk->sk_state ==TCP_CLOSE ) tp->fastopen_connect = val;else
@@ -3386,7 +3388,7 @@ static int do_tcp_getsockopt(struct sock *sk, int level,case TCP_LINGER2 : val = tp->linger2;if (val >=0 ) - val = (val ? : net->ipv4.sysctl_tcp_fin_timeout) /HZ ; + val = (val ? :READ_ONCE (net->ipv4.sysctl_tcp_fin_timeout)) /HZ ;break ;case TCP_DEFER_ACCEPT : val = retrans_to_secs(icsk->icsk_accept_queue.rskq_defer_accept,
net/ipv4/tcp_fastopen.c +2 -2
@@ -313,7 +313,7 @@ static bool tcp_fastopen_no_cookie(const struct sock *sk, const struct dst_entry *dst, int flag) { - return (sock_net(sk)->ipv4.sysctl_tcp_fastopen & flag) || + return (READ_ONCE(sock_net(sk)->ipv4.sysctl_tcp_fastopen) & flag) || tcp_sk(sk)->fastopen_no_cookie || (dst && dst_metric(dst, RTAX_FASTOPEN_NO_COOKIE)); }
@@ -328,7 +328,7 @@ struct sock *tcp_try_fastopen(struct sock *sk, struct sk_buff *skb, const struct dst_entry *dst) {bool syn_data =TCP_SKB_CB (skb)->end_seq !=TCP_SKB_CB (skb)->seq +1 ; -int tcp_fastopen =sock_net (sk)->ipv4.sysctl_tcp_fastopen; +int tcp_fastopen =READ_ONCE (sock_net (sk)->ipv4.sysctl_tcp_fastopen);struct tcp_fastopen_cookie valid_foc = { .len =-1 };struct sock *child;
net/ipv4/tcp_input.c +12 -7
@@ -893,7 +893,7 @@ static void tcp_check_sack_reordering(struct sock *sk, const u32 low_seq, tp->undo_marker ? tp->undo_retrans : 0);#endif tp->reordering =min_t (u32, (metric + mss -1 ) / mss, -sock_net (sk)->ipv4.sysctl_tcp_max_reordering); +READ_ONCE (sock_net (sk)->ipv4.sysctl_tcp_max_reordering)); }/* This exciting event is worth to be remembered. 8) */
@@ -1878,7 +1878,7 @@ static void tcp_check_reno_reordering(struct sock *sk, const int addend)return ; tp->reordering =min_t (u32, tp->packets_out + addend, -sock_net (sk)->ipv4.sysctl_tcp_max_reordering); +READ_ONCE (sock_net (sk)->ipv4.sysctl_tcp_max_reordering)); tp->reord_seen++;NET_INC_STATS (sock_net (sk),LINUX_MIB_TCPRENOREORDER ); }
@@ -1938,7 +1938,8 @@ static inline void tcp_init_undo(struct tcp_sock *tp)static bool tcp_is_rack (const struct sock *sk) { -return sock_net (sk)->ipv4.sysctl_tcp_recovery &TCP_RACK_LOSS_DETECTION ; +return READ_ONCE (sock_net (sk)->ipv4.sysctl_tcp_recovery) & +TCP_RACK_LOSS_DETECTION ; }/* If we detect SACK reneging, forget all SACK information
@@ -1982,6 +1983,7 @@ void tcp_enter_loss(struct sock *sk)struct tcp_sock *tp =tcp_sk (sk);struct net *net =sock_net (sk);bool new_recovery = icsk->icsk_ca_state < TCP_CA_Recovery; +u8 reordering;tcp_timeout_mark_lost (sk);
@@ -2002,10 +2004,12 @@ void tcp_enter_loss(struct sock *sk)/* Timeout in disordered state after receiving substantial DUPACKs * suggests that the degree of reordering is over-estimated. */ + reordering =READ_ONCE (net->ipv4.sysctl_tcp_reordering);if (icsk->icsk_ca_state <= TCP_CA_Disorder && - tp->sacked_out >= net->ipv4.sysctl_tcp_reordering) + tp->sacked_out >= reordering) tp->reordering = min_t(unsigned int, tp->reordering, - net->ipv4.sysctl_tcp_reordering); + reordering); +tcp_set_ca_state (sk, TCP_CA_Loss); tp->high_seq = tp->snd_nxt;tcp_ecn_queue_cwr (tp);
@@ -3303,7 +3307,8 @@ static inline bool tcp_may_raise_cwnd(const struct sock *sk, const int flag)* new SACK or ECE mark may first advance cwnd here and later reduce * cwnd in tcp_fastretrans_alert() based on more states. */ -if (tcp_sk (sk)->reordering >sock_net (sk)->ipv4.sysctl_tcp_reordering) +if (tcp_sk (sk)->reordering > +READ_ONCE (sock_net (sk)->ipv4.sysctl_tcp_reordering))return flag &FLAG_FORWARD_PROGRESS ;return flag &FLAG_DATA_ACKED ;
@@ -5287,7 +5292,7 @@ static void tcp_check_urg(struct sock *sk, const struct tcphdr *th)struct tcp_sock *tp =tcp_sk (sk);u32 ptr =ntohs (th->urg_ptr); -if (ptr && !sock_net (sk)->ipv4.sysctl_tcp_stdurg) +if (ptr && !READ_ONCE (sock_net (sk)->ipv4.sysctl_tcp_stdurg)) ptr--; ptr +=ntohl (th->seq);
net/ipv4/tcp_ipv4.c +1 -1
@@ -110,10 +110,10 @@ static u32 tcp_v4_init_ts_off(const struct net *net, const struct sk_buff *skb)int tcp_twsk_unique (struct sock *sk,struct sock *sktw,void *twp) { +int reuse =READ_ONCE (sock_net (sk)->ipv4.sysctl_tcp_tw_reuse);const struct inet_timewait_sock *tw =inet_twsk (sktw);const struct tcp_timewait_sock *tcptw =tcp_twsk (sktw);struct tcp_sock *tp =tcp_sk (sk); -int reuse =sock_net (sk)->ipv4.sysctl_tcp_tw_reuse;if (reuse ==2 ) {/* Still does not detect *everything* that goes through
net/ipv4/tcp_metrics.c +2 -1
@@ -425,7 +425,8 @@ void tcp_update_metrics(struct sock *sk)if (!tcp_metric_locked (tm,TCP_METRIC_REORDERING )) { val =tcp_metric_get (tm,TCP_METRIC_REORDERING );if (val < tp->reordering && - tp->reordering != net->ipv4.sysctl_tcp_reordering) + tp->reordering != +READ_ONCE (net->ipv4.sysctl_tcp_reordering))tcp_metric_set (tm,TCP_METRIC_REORDERING , tp->reordering); }
net/ipv4/tcp_minisocks.c +1 -1
@@ -179,7 +179,7 @@ tcp_timewait_state_process(struct inet_timewait_sock *tw, struct sk_buff *skb,* Oh well... nobody has a sufficient solution to this * protocol bug yet. */ -if (twsk_net (tw)->ipv4.sysctl_tcp_rfc1337 ==0 ) { +if (!READ_ONCE (twsk_net (tw)->ipv4.sysctl_tcp_rfc1337)) { kill:inet_twsk_deschedule_put (tw);return TCP_TW_SUCCESS ;
net/ipv4/tcp_output.c +7 -7
@@ -1523,7 +1523,7 @@ void tcp_mtup_init(struct sock *sk)struct inet_connection_sock *icsk =inet_csk (sk);struct net *net =sock_net (sk); - icsk->icsk_mtup.enabled = net->ipv4.sysctl_tcp_mtu_probing >1 ; + icsk->icsk_mtup.enabled =READ_ONCE (net->ipv4.sysctl_tcp_mtu_probing) >1 ; icsk->icsk_mtup.search_high = tp->rx_opt.mss_clamp +sizeof (struct tcphdr ) + icsk->icsk_af_ops->net_header_len; icsk->icsk_mtup.search_low =tcp_mss_to_mtu (sk, net->ipv4.sysctl_tcp_base_mss);
@@ -1658,7 +1658,7 @@ static void tcp_cwnd_validate(struct sock *sk, bool is_cwnd_limited)if (tp->packets_out > tp->snd_cwnd_used) tp->snd_cwnd_used = tp->packets_out; -if (sock_net (sk)->ipv4.sysctl_tcp_slow_start_after_idle && +if (READ_ONCE (sock_net (sk)->ipv4.sysctl_tcp_slow_start_after_idle) && (s32)(tcp_jiffies32 - tp->snd_cwnd_stamp) >=inet_csk (sk)->icsk_rto && !ca_ops->cong_control)tcp_cwnd_application_limited (sk);
@@ -2030,7 +2030,7 @@ static inline void tcp_mtu_check_reprobe(struct sock *sk)u32 interval;s32 delta; - interval = net->ipv4.sysctl_tcp_probe_interval; + interval =READ_ONCE (net->ipv4.sysctl_tcp_probe_interval); delta = tcp_jiffies32 - icsk->icsk_mtup.probe_timestamp;if (unlikely (delta >= interval *HZ )) {int mss =tcp_current_mss (sk);
@@ -2112,7 +2112,7 @@ static int tcp_mtu_probe(struct sock *sk)* probing process by not resetting search range to its orignal. */ if (probe_size >tcp_mtu_to_mss (sk, icsk->icsk_mtup.search_high) || - interval < net->ipv4.sysctl_tcp_probe_threshold) { + interval <READ_ONCE (net->ipv4.sysctl_tcp_probe_threshold)) {/* Check whether enough time has elaplased for * another round of probing. */
@@ -2454,7 +2454,7 @@ bool tcp_schedule_loss_probe(struct sock *sk, bool advancing_rto)if (tp->fastopen_rsk)return false; - early_retrans =sock_net (sk)->ipv4.sysctl_tcp_early_retrans; + early_retrans =READ_ONCE (sock_net (sk)->ipv4.sysctl_tcp_early_retrans);/* Schedule a loss probe in 2*RTT for SACK capable connections * not in loss recovery, that are either limited by cwnd or application. */
@@ -2816,7 +2816,7 @@ static void tcp_retrans_try_collapse(struct sock *sk, struct sk_buff *to,struct sk_buff *skb = to, *tmp;bool first = true; -if (!sock_net (sk)->ipv4.sysctl_tcp_retrans_collapse) +if (!READ_ONCE (sock_net (sk)->ipv4.sysctl_tcp_retrans_collapse))return ;if (TCP_SKB_CB (skb)->tcp_flags &TCPHDR_SYN )return ;
@@ -3776,7 +3776,7 @@ void tcp_send_probe0(struct sock *sk) }if (err <=0 ) { -if (icsk->icsk_backoff < net->ipv4.sysctl_tcp_retries2) +if (icsk->icsk_backoff <READ_ONCE (net->ipv4.sysctl_tcp_retries2)) icsk->icsk_backoff++; icsk->icsk_probes_out++; probe_max =TCP_RTO_MAX ;
net/ipv4/tcp_recovery.c +4 -2
@@ -33,7 +33,8 @@ static u32 tcp_rack_reo_wnd(const struct sock *sk)return 0 ;if (tp->sacked_out >= tp->reordering && - !(sock_net (sk)->ipv4.sysctl_tcp_recovery &TCP_RACK_NO_DUPTHRESH )) + !(READ_ONCE (sock_net (sk)->ipv4.sysctl_tcp_recovery) & +TCP_RACK_NO_DUPTHRESH ))return 0 ; }
@@ -203,7 +204,8 @@ void tcp_rack_update_reo_wnd(struct sock *sk, struct rate_sample *rs) {struct tcp_sock *tp =tcp_sk (sk); -if (sock_net (sk)->ipv4.sysctl_tcp_recovery &TCP_RACK_STATIC_REO_WND || +if ((READ_ONCE (sock_net (sk)->ipv4.sysctl_tcp_recovery) & +TCP_RACK_STATIC_REO_WND ) || !rs->prior_delivered)return ;
net/ipv4/tcp_timer.c +7 -7
@@ -124,7 +124,7 @@ static int tcp_out_of_resources(struct sock *sk, bool do_reset)*/ static int tcp_orphan_retries (struct sock *sk,bool alive) { -int retries =sock_net (sk)->ipv4.sysctl_tcp_orphan_retries;/* May be zero. */ +int retries =READ_ONCE (sock_net (sk)->ipv4.sysctl_tcp_orphan_retries);/* May be zero. */ /* We know from an ICMP that something is wrong. */ if (sk->sk_err_soft && !alive)
@@ -144,7 +144,7 @@ static void tcp_mtu_probing(struct inet_connection_sock *icsk, struct sock *sk)int mss;/* Black hole detection */ -if (!net->ipv4.sysctl_tcp_mtu_probing) +if (!READ_ONCE (net->ipv4.sysctl_tcp_mtu_probing))return ;if (!icsk->icsk_mtup.enabled) {
@@ -226,7 +226,7 @@ static int tcp_write_timeout(struct sock *sk) retry_until = icsk->icsk_syn_retries ? : net->ipv4.sysctl_tcp_syn_retries; expired = icsk->icsk_retransmits >= retry_until; }else { -if (retransmits_timed_out (sk, net->ipv4.sysctl_tcp_retries1,0 )) { +if (retransmits_timed_out (sk,READ_ONCE (net->ipv4.sysctl_tcp_retries1),0 )) {/* Black hole detection */ tcp_mtu_probing (icsk, sk);
@@ -235,7 +235,7 @@ static int tcp_write_timeout(struct sock *sk)sk_rethink_txhash (sk); } - retry_until = net->ipv4.sysctl_tcp_retries2; + retry_until =READ_ONCE (net->ipv4.sysctl_tcp_retries2);if (sock_flag (sk,SOCK_DEAD )) {const bool alive = icsk->icsk_rto <TCP_RTO_MAX ;
@@ -362,7 +362,7 @@ static void tcp_probe_timer(struct sock *sk) (s32)(tcp_time_stamp(tp) - start_ts) > icsk->icsk_user_timeout) goto abort; - max_probes =sock_net (sk)->ipv4.sysctl_tcp_retries2; + max_probes =READ_ONCE (sock_net (sk)->ipv4.sysctl_tcp_retries2);if (sock_flag (sk,SOCK_DEAD )) {const bool alive =inet_csk_rto_backoff (icsk,TCP_RTO_MAX ) <TCP_RTO_MAX ;
@@ -545,7 +545,7 @@ void tcp_retransmit_timer(struct sock *sk)* linear-timeout retransmissions into a black hole */ if (sk->sk_state ==TCP_ESTABLISHED && - (tp->thin_lto || net->ipv4.sysctl_tcp_thin_linear_timeouts) && + (tp->thin_lto ||READ_ONCE (net->ipv4.sysctl_tcp_thin_linear_timeouts)) &&tcp_stream_is_thin (tp) && icsk->icsk_retransmits <=TCP_THIN_LINEAR_RETRIES ) { icsk->icsk_backoff =0 ;
@@ -556,7 +556,7 @@ void tcp_retransmit_timer(struct sock *sk) }inet_csk_reset_xmit_timer (sk,ICSK_TIME_RETRANS ,tcp_clamp_rto_to_user_timeout (sk),TCP_RTO_MAX ); -if (retransmits_timed_out (sk, net->ipv4.sysctl_tcp_retries1 +1 ,0 )) +if (retransmits_timed_out (sk,READ_ONCE (net->ipv4.sysctl_tcp_retries1) +1 ,0 ))__sk_dst_reset (sk); out:;
net/sctp/protocol.c +1 -1
@@ -373,7 +373,7 @@ static int sctp_v4_available(union sctp_addr *addr, struct sctp_sock *sp)if (addr->v4.sin_addr.s_addr !=htonl (INADDR_ANY ) && ret !=RTN_LOCAL && !sp->inet.freebind && - !net->ipv4.sysctl_ip_nonlocal_bind) + !READ_ONCE (net->ipv4.sysctl_ip_nonlocal_bind))return 0 ;if (ipv6_only_sock (sctp_opt2sk (sp)))
net/tls/tls_device.c +5 -3
@@ -110,13 +110,16 @@ static void tls_device_queue_ctx_destruction(struct tls_context *ctx)unsigned long flags;spin_lock_irqsave (&tls_device_lock, flags); +if (unlikely (!refcount_dec_and_test (&ctx->refcount))) + goto unlock; +list_move_tail (&ctx->list, &tls_device_gc_list);/* schedule_work inside the spinlock * to make sure tls_device_down waits for that work. */ schedule_work (&tls_device_gc_work); - +unlock:spin_unlock_irqrestore (&tls_device_lock, flags); }
@@ -214,8 +217,7 @@ void tls_device_sk_destruct(struct sock *sk)clean_acked_data_disable (inet_csk (sk)); } -if (refcount_dec_and_test (&tls_ctx->refcount)) -tls_device_queue_ctx_destruction (tls_ctx); +tls_device_queue_ctx_destruction (tls_ctx); }EXPORT_SYMBOL (tls_device_sk_destruct);
net/xfrm/xfrm_policy.c +4 -1
@@ -1697,8 +1697,10 @@ static int xfrm_expand_policies(const struct flowi *fl, u16 family, *num_xfrms =0 ;return 0 ; } -if (IS_ERR (pols[0 ])) +if (IS_ERR (pols[0 ])) { + *num_pols =0 ;return PTR_ERR (pols[0 ]); + } *num_xfrms = pols[0 ]->xfrm_nr;
@@ -1713,6 +1715,7 @@ static int xfrm_expand_policies(const struct flowi *fl, u16 family,if (pols[1 ]) {if (IS_ERR (pols[1 ])) {xfrm_pols_put (pols, *num_pols); + *num_pols =0 ;return PTR_ERR (pols[1 ]); } (*num_pols)++;
security/integrity/ima/Kconfig +5 -7
@@ -68,10 +68,9 @@ choice hash, defined as 20 bytes, and a null terminated pathname, limited to 255 characters. The 'ima-ng' measurement list template permits both larger hash digests and longer - pathnames. + pathnames. The configured default template can be replaced + by specifying "ima_template=" on the boot command line. - config IMA_TEMPLATE - bool "ima" config IMA_NG_TEMPLATE bool "ima-ng (default)" config IMA_SIG_TEMPLATE
@@ -81,7 +80,6 @@ endchoice config IMA_DEFAULT_TEMPLATE string depends on IMA - default "ima" if IMA_TEMPLATE default "ima-ng" if IMA_NG_TEMPLATE default "ima-sig" if IMA_SIG_TEMPLATE
@@ -101,15 +99,15 @@ choice config IMA_DEFAULT_HASH_SHA256 bool "SHA256" - depends on CRYPTO_SHA256=y && !IMA_TEMPLATE + depends on CRYPTO_SHA256=y config IMA_DEFAULT_HASH_SHA512 bool "SHA512" - depends on CRYPTO_SHA512=y && !IMA_TEMPLATE + depends on CRYPTO_SHA512=y config IMA_DEFAULT_HASH_WP512 bool "WP512" - depends on CRYPTO_WP512=y && !IMA_TEMPLATE + depends on CRYPTO_WP512=y endchoice config IMA_DEFAULT_HASH
sound/core/memalloc.c +1 -0
@@ -179,6 +179,7 @@ int snd_dma_alloc_pages(int type, struct device *device, size_t size,if (WARN_ON (!dmab))return -ENXIO ; + size =PAGE_ALIGN (size); dmab->dev.type = type; dmab->dev.dev = device; dmab->bytes =0 ;