Linux 6.0.4
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.0.4 kernel.
All users of the 6.0 kernel series must upgrade.
The updated 6.0.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.0.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 drivers/firmware/efi/efi.c | 2 drivers/firmware/efi/vars.c | 10 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 8 drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu13_driver_if_v13_0_4.h | 17 + drivers/gpu/drm/amd/pm/swsmu/inc/smu_v13_0.h | 2 drivers/gpu/drm/amd/pm/swsmu/smu11/arcturus_ppt.c | 8 drivers/gpu/drm/amd/pm/swsmu/smu13/aldebaran_ppt.c | 9 drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c | 11 + drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c | 12 + drivers/gpu/drm/i915/display/intel_bios.c | 106 ++++------ drivers/hid/hid-ids.h | 1 drivers/hid/hid-playstation.c | 46 +++- drivers/md/dm-clone-target.c | 2 drivers/pinctrl/pinctrl-amd.c | 4 drivers/thermal/intel/intel_powerclamp.c | 6 drivers/video/aperture.c | 30 +- drivers/video/fbdev/core/fbmem.c | 48 ---- fs/efivarfs/vars.c | 16 - include/linux/efi.h | 3 include/linux/fb.h | 2 include/linux/net.h | 1 io_uring/io-wq.c | 2 io_uring/net.c | 2 kernel/gcov/gcc_4_7.c | 18 + net/ipv4/tcp.c | 1 net/ipv4/udp.c | 1 sound/pci/hda/hda_codec.c | 41 +-- 28 files changed, 228 insertions(+), 183 deletions(-)
Ard Biesheuvel (2):
efi: efivars: Fix variable writes without query_variable_store()
efi: ssdt: Don't free memory if ACPI table was loaded successfully
Basavaraj Natikar (1):
pinctrl: amd: change dev_warn to dev_dbg for additional feature support
Evan Quan (3):
drm/amd/pm: fulfill SMU13.0.7 cstate control interface drm/amd/pm: disable cstate feature for gpu reset scenario drm/amd/pm: fulfill SMU13.0.0 cstate control interface
Greg Kroah-Hartman (1):
Linux 6.0.4
Martin Liska (1):
gcov: support GCC 12.1 and newer compilers
Nikos Tsironis (1):
dm clone: Fix typo in block_device format specifier
Pavel Begunkov (2):
io_uring/net: fail zc send when unsupported by socket
net: flag sockets supporting msghdr originated zerocopy
Rafael J. Wysocki (1):
thermal: intel_powerclamp: Use first online CPU as control_cpu
Rafael Mendonca (1):
io-wq: Fix memory leak in worker creation
Roderick Colenbrander (2):
HID: playstation: stop DualSense output work on remove.
HID: playstation: add initial DualSense Edge controller support
Takashi Iwai (1):
Revert "ALSA: hda: Fix page fault in snd_hda_codec_shutdown()"
Thomas Zimmermann (1):
fbdev/core: Remove remove_conflicting_pci_framebuffers()
Tim Huang (2):
drm/amd/pm: add SMU IP v13.0.4 IF version define to V7 drm/amd/pm: update SMU IP v13.0.4 driver interface version
Ville Syrjälä (2):
drm/i915/bios: Validate fp_timing terminator presence drm/i915/bios: Use hardcoded fp_timing size for generating LFP data pointers
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 0 -SUBLEVEL = 3 +SUBLEVEL = 4 EXTRAVERSION = NAME = Hurr durr I'ma ninja sloth
drivers/firmware/efi/efi.c +2 -0
@@ -269,6 +269,8 @@ static __init int efivar_ssdt_load(void)acpi_status ret =acpi_load_table (data,NULL );if (ret)pr_err ("failed to load table: %u\n" , ret); +else +continue ; }else {pr_err ("failed to get var data: 0x%lx\n" , status); }
drivers/firmware/efi/vars.c +5 -5
@@ -7,6 +7,7 @@*/ #include <linux/types.h> +#include <linux/sizes.h> #include <linux/errno.h> #include <linux/init.h> #include <linux/module.h>
@@ -20,19 +21,19 @@ static struct efivars *__efivars;static DEFINE_SEMAPHORE (efivars_lock); -efi_status_t check_var_size (u32 attributes,unsigned long size) +static efi_status_t check_var_size (u32 attributes,unsigned long size) {const struct efivar_operations *fops; fops = __efivars->ops;if (!fops->query_variable_store) -return EFI_UNSUPPORTED ; +return (size <=SZ_64K ) ?EFI_SUCCESS :EFI_OUT_OF_RESOURCES ;return fops->query_variable_store (attributes, size, false); } -EXPORT_SYMBOL_NS_GPL (check_var_size,EFIVAR ); +static efi_status_t check_var_size_nonblocking (u32 attributes,unsigned long size) {const struct efivar_operations *fops;
@@ -40,11 +41,10 @@ efi_status_t check_var_size_nonblocking(u32 attributes, unsigned long size) fops = __efivars->ops;if (!fops->query_variable_store) -return EFI_UNSUPPORTED ; +return (size <=SZ_64K ) ?EFI_SUCCESS :EFI_OUT_OF_RESOURCES ;return fops->query_variable_store (attributes, size, true); } -EXPORT_SYMBOL_NS_GPL (check_var_size_nonblocking,EFIVAR );/** * efivars_kobject - get the kobject for the registered efivars
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +8 -0
@@ -2926,6 +2926,14 @@ static int amdgpu_device_ip_suspend_phase1(struct amdgpu_device *adev)amdgpu_device_set_pg_state (adev,AMD_PG_STATE_UNGATE );amdgpu_device_set_cg_state (adev,AMD_CG_STATE_UNGATE ); +/* +* Per PMFW team's suggestion, driver needs to handle gfxoff +* and df cstate features disablement for gpu reset(e.g. Mode1Reset) +* scenario. Add the missing df cstate disablement here. +*/ +if (amdgpu_dpm_set_df_cstate (adev,DF_CSTATE_DISALLOW )) +dev_warn (adev->dev,"Failed to disallow df cstate" ); +for (i = adev->num_ip_blocks -1 ; i >=0 ; i--) {if (!adev->ip_blocks[i].status.valid)continue ;
drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu13_driver_if_v13_0_4.h +15 -2
@@ -27,7 +27,7 @@// *** IMPORTANT *** // SMU TEAM: Always increment the interface version if // any structure is changed in this file -#define PMFW_DRIVER_IF_VERSION 5 +#define PMFW_DRIVER_IF_VERSION 7 typedef struct { int32_t value;
@@ -163,8 +163,8 @@ typedef struct {uint16_t DclkFrequency;//[MHz] uint16_t MemclkFrequency;//[MHz] uint16_t spare;//[centi] -uint16_t UvdActivity;//[centi] uint16_t GfxActivity;//[centi] +uint16_t UvdActivity;//[centi] uint16_t Voltage[2 ];//[mV] indices: VDDCR_VDD, VDDCR_SOC uint16_t Current[2 ];//[mA] indices: VDDCR_VDD, VDDCR_SOC
@@ -199,6 +199,19 @@ typedef struct {uint16_t DeviceState;uint16_t CurTemp;//[centi-Celsius] uint16_t spare2; + +uint16_t AverageGfxclkFrequency; +uint16_t AverageFclkFrequency; +uint16_t AverageGfxActivity; +uint16_t AverageSocclkFrequency; +uint16_t AverageVclkFrequency; +uint16_t AverageVcnActivity; +uint16_t AverageDRAMReads;//Filtered DF Bandwidth::DRAM Reads +uint16_t AverageDRAMWrites;//Filtered DF Bandwidth::DRAM Writes +uint16_t AverageSocketPower;//Filtered value of CurrentSocketPower +uint16_t AverageCorePower;//Filtered of [sum of CorePower[8]]) +uint16_t AverageCoreC0Residency[8 ];//Filtered of [average C0 residency % per core] +uint32_t MetricsCounter;//Counts the # of metrics table parameter reads per update to the metrics table, i.e. if the metrics table update happens every 1 second, this value could be up to 1000 if the smu collected metrics data every cycle, or as low as 0 if the smu was asleep the whole time. Reset to 0 after writing. } SmuMetrics_t; typedef struct {
drivers/gpu/drm/amd/pm/swsmu/inc/smu_v13_0.h +1 -1
@@ -28,7 +28,7 @@#define SMU13_DRIVER_IF_VERSION_INV 0xFFFFFFFF#define SMU13_DRIVER_IF_VERSION_YELLOW_CARP 0x04#define SMU13_DRIVER_IF_VERSION_ALDE 0x08 -#define SMU13_DRIVER_IF_VERSION_SMU_V13_0_4 0x05 +#define SMU13_DRIVER_IF_VERSION_SMU_V13_0_4 0x07#define SMU13_DRIVER_IF_VERSION_SMU_V13_0_5 0x04#define SMU13_DRIVER_IF_VERSION_SMU_V13_0_0 0x30#define SMU13_DRIVER_IF_VERSION_SMU_V13_0_7 0x2C
drivers/gpu/drm/amd/pm/swsmu/smu11/arcturus_ppt.c +8 -0
@@ -2242,9 +2242,17 @@ static void arcturus_get_unique_id(struct smu_context *smu)static int arcturus_set_df_cstate (struct smu_context *smu,enum pp_df_cstate state) { +struct amdgpu_device *adev = smu->adev;uint32_t smu_version;int ret; +/* +* Arcturus does not need the cstate disablement +* prerequisite for gpu reset. +*/ +if (amdgpu_in_reset (adev) || adev->in_suspend) +return 0 ; + ret =smu_cmn_get_smc_version (smu,NULL , &smu_version);if (ret) {dev_err (smu->adev->dev,"Failed to get smu version!\n" );
drivers/gpu/drm/amd/pm/swsmu/smu13/aldebaran_ppt.c +9 -0
@@ -1640,6 +1640,15 @@ static bool aldebaran_is_baco_supported(struct smu_context *smu)static int aldebaran_set_df_cstate (struct smu_context *smu,enum pp_df_cstate state) { +struct amdgpu_device *adev = smu->adev; + +/* +* Aldebaran does not need the cstate disablement +* prerequisite for gpu reset. +*/ +if (amdgpu_in_reset (adev) || adev->in_suspend) +return 0 ; +return smu_cmn_send_smc_msg_with_param (smu, SMU_MSG_DFCstateControl, state,NULL ); }
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c +11 -0
@@ -119,6 +119,7 @@ static struct cmn2asic_msg_mapping smu_v13_0_0_message_map[SMU_MSG_MAX_COUNT] =MSG_MAP (NotifyPowerSource, PPSMC_MSG_NotifyPowerSource,0 ),MSG_MAP (Mode1Reset, PPSMC_MSG_Mode1Reset,0 ),MSG_MAP (PrepareMp1ForUnload, PPSMC_MSG_PrepareMp1ForUnload,0 ), + MSG_MAP(DFCstateControl, PPSMC_MSG_SetExternalClientDfCstateAllow, 0), }; static struct cmn2asic_mapping smu_v13_0_0_clk_map[SMU_CLK_COUNT] = {
@@ -1753,6 +1754,15 @@ static int smu_v13_0_0_set_mp1_state(struct smu_context *smu,return ret; } +static int smu_v13_0_0_set_df_cstate (struct smu_context *smu, +enum pp_df_cstate state) +{ +return smu_cmn_send_smc_msg_with_param (smu, + SMU_MSG_DFCstateControl, + state, +NULL ); +} +static const struct pptable_funcs smu_v13_0_0_ppt_funcs = { .get_allowed_feature_mask = smu_v13_0_0_get_allowed_feature_mask, .set_default_dpm_table = smu_v13_0_0_set_default_dpm_table,
@@ -1822,6 +1832,7 @@ static const struct pptable_funcs smu_v13_0_0_ppt_funcs = { .mode1_reset_is_support = smu_v13_0_0_is_mode1_reset_supported, .mode1_reset = smu_v13_0_mode1_reset, .set_mp1_state = smu_v13_0_0_set_mp1_state, + .set_df_cstate = smu_v13_0_0_set_df_cstate, };void smu_v13_0_0_set_ppt_funcs (struct smu_context *smu)
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c +12 -0
@@ -121,6 +121,7 @@ static struct cmn2asic_msg_mapping smu_v13_0_7_message_map[SMU_MSG_MAX_COUNT] =MSG_MAP (Mode1Reset, PPSMC_MSG_Mode1Reset,0 ),MSG_MAP (PrepareMp1ForUnload, PPSMC_MSG_PrepareMp1ForUnload,0 ),MSG_MAP (SetMGpuFanBoostLimitRpm, PPSMC_MSG_SetMGpuFanBoostLimitRpm,0 ), + MSG_MAP(DFCstateControl, PPSMC_MSG_SetExternalClientDfCstateAllow, 0), }; static struct cmn2asic_mapping smu_v13_0_7_clk_map[SMU_CLK_COUNT] = {
@@ -1587,6 +1588,16 @@ static bool smu_v13_0_7_is_mode1_reset_supported(struct smu_context *smu)return true; } + +static int smu_v13_0_7_set_df_cstate (struct smu_context *smu, +enum pp_df_cstate state) +{ +return smu_cmn_send_smc_msg_with_param (smu, + SMU_MSG_DFCstateControl, + state, +NULL ); +} +static const struct pptable_funcs smu_v13_0_7_ppt_funcs = { .get_allowed_feature_mask = smu_v13_0_7_get_allowed_feature_mask, .set_default_dpm_table = smu_v13_0_7_set_default_dpm_table,
@@ -1649,6 +1660,7 @@ static const struct pptable_funcs smu_v13_0_7_ppt_funcs = { .mode1_reset_is_support = smu_v13_0_7_is_mode1_reset_supported, .mode1_reset = smu_v13_0_mode1_reset, .set_mp1_state = smu_v13_0_7_set_mp1_state, + .set_df_cstate = smu_v13_0_7_set_df_cstate, };void smu_v13_0_7_set_ppt_funcs (struct smu_context *smu)
drivers/gpu/drm/i915/display/intel_bios.c +50 -56
177 lines not on this page · raw message
drivers/hid/hid-ids.h +1 -0
@@ -1142,6 +1142,7 @@#define USB_DEVICE_ID_SONY_PS4_CONTROLLER_2 0x09cc#define USB_DEVICE_ID_SONY_PS4_CONTROLLER_DONGLE 0x0ba0#define USB_DEVICE_ID_SONY_PS5_CONTROLLER 0x0ce6 +#define USB_DEVICE_ID_SONY_PS5_CONTROLLER_2 0x0df2#define USB_DEVICE_ID_SONY_MOTION_CONTROLLER 0x03d5#define USB_DEVICE_ID_SONY_NAVIGATION_CONTROLLER 0x042f#define USB_DEVICE_ID_SONY_BUZZ_CONTROLLER 0x0002
drivers/hid/hid-playstation.c +40 -6
134 lines not on this page · raw message
drivers/md/dm-clone-target.c +1 -1
@@ -2035,7 +2035,7 @@ static void disable_passdown_if_not_supported(struct clone *clone) reason ="max discard sectors smaller than a region" ;if (reason) { -DMWARN ("Destination device (%pd) %s: Disabling discard passdown." , +DMWARN ("Destination device (%pg) %s: Disabling discard passdown." , dest_dev, reason);clear_bit (DM_CLONE_DISCARD_PASSDOWN , &clone->flags); }
drivers/pinctrl/pinctrl-amd.c +2 -2
@@ -1051,13 +1051,13 @@ static void amd_get_iomux_res(struct amd_gpio *gpio_dev) index =device_property_match_string (dev,"pinctrl-resource-names" ,"iomux" );if (index <0 ) { -dev_warn (dev,"failed to get iomux index\n" ); +dev_dbg (dev,"iomux not supported\n" ); goto out_no_pinmux; } gpio_dev->iomux_base =devm_platform_ioremap_resource (gpio_dev->pdev, index);if (IS_ERR (gpio_dev->iomux_base)) { -dev_warn (dev,"Failed to get iomux %d io resource\n" , index); +dev_dbg (dev,"iomux not supported %d io resource\n" , index); goto out_no_pinmux; }
drivers/thermal/intel/intel_powerclamp.c +1 -5
@@ -531,11 +531,7 @@ static int start_power_clamp(void)cpus_read_lock ();/* prefer BSP */ - control_cpu =0 ; -if (!cpu_online (control_cpu)) { - control_cpu =get_cpu (); -put_cpu (); - } + control_cpu =cpumask_first (cpu_online_mask); clamping = true;schedule_delayed_work (&poll_pkg_cstate_work,0 );
drivers/video/aperture.c +18 -12
@@ -335,30 +335,36 @@ EXPORT_SYMBOL(aperture_remove_conflicting_devices);*/ int aperture_remove_conflicting_pci_devices (struct pci_dev *pdev,const char *name) { +bool primary = false;resource_size_t base, size;int bar, ret; -/* -* WARNING: Apparently we must kick fbdev drivers before vgacon, -* otherwise the vga fbdev driver falls over. -*/ -#if IS_REACHABLE (CONFIG_FB ) - ret =remove_conflicting_pci_framebuffers (pdev, name); -if (ret) -return ret; +#ifdef CONFIG_X86 + primary = pdev->resource[PCI_ROM_RESOURCE ].flags &IORESOURCE_ROM_SHADOW ;#endif - ret =vga_remove_vgacon (pdev); -if (ret) -return ret;for (bar =0 ; bar <PCI_STD_NUM_BARS ; ++bar) {if (!(pci_resource_flags (pdev, bar) &IORESOURCE_MEM ))continue ; + base =pci_resource_start (pdev, bar); size =pci_resource_len (pdev, bar); -aperture_detach_devices (base, size); + ret =aperture_remove_conflicting_devices (base, size, primary, name); +if (ret) +break ; } +if (ret) +return ret; + +/* +* WARNING: Apparently we must kick fbdev drivers before vgacon, +* otherwise the vga fbdev driver falls over. +*/ + ret =vga_remove_vgacon (pdev); +if (ret) +return ret; +return 0 ; }
drivers/video/fbdev/core/fbmem.c +0 -48
54 lines not on this page · raw message
fs/efivarfs/vars.c +0 -16
@@ -651,22 +651,6 @@ int efivar_entry_set_get_size(struct efivar_entry *entry, u32 attributes,if (err)return err; -/* -* Ensure that the available space hasn't shrunk below the safe level -*/ - status =check_var_size (attributes, *size +ucs2_strsize (name,1024 )); -if (status !=EFI_SUCCESS ) { -if (status !=EFI_UNSUPPORTED ) { - err =efi_status_to_err (status); - goto out; - } - -if (*size >65536 ) { - err = -ENOSPC ; - goto out; - } - } - status =efivar_set_variable_locked (name, vendor, attributes, *size, data, false);if (status !=EFI_SUCCESS ) {
include/linux/efi.h +0 -3
@@ -1055,9 +1055,6 @@ efi_status_t efivar_set_variable_locked(efi_char16_t *name, efi_guid_t *vendor,efi_status_t efivar_set_variable (efi_char16_t *name,efi_guid_t *vendor,u32 attr,unsigned long data_size,void *data); -efi_status_t check_var_size (u32 attributes,unsigned long size); -efi_status_t check_var_size_nonblocking (u32 attributes,unsigned long size); -#if IS_ENABLED (CONFIG_EFI_CAPSULE_LOADER )extern bool efi_capsule_pending (int *reset_type);
include/linux/fb.h +0 -2
@@ -615,8 +615,6 @@ extern ssize_t fb_sys_write(struct fb_info *info, const char __user *buf,/* drivers/video/fbmem.c */ extern int register_framebuffer (struct fb_info *fb_info);extern void unregister_framebuffer (struct fb_info *fb_info); -extern int remove_conflicting_pci_framebuffers (struct pci_dev *pdev, -const char *name);extern int remove_conflicting_framebuffers (struct apertures_struct *a,const char *name,bool primary);extern int fb_prepare_logo (struct fb_info *fb_info,int rotate);
include/linux/net.h +1 -0
@@ -41,6 +41,7 @@ struct net;#define SOCK_NOSPACE 2#define SOCK_PASSCRED 3#define SOCK_PASSSEC 4 +#define SOCK_SUPPORT_ZC 5#ifndef ARCH_HAS_SOCKET_TYPES /**
io_uring/io-wq.c +1 -1
@@ -1164,10 +1164,10 @@ struct io_wq *io_wq_create(unsigned bounded, struct io_wq_data *data) wqe =kzalloc_node (sizeof (struct io_wqe ),GFP_KERNEL , alloc_node);if (!wqe) goto err; + wq->wqes[node] = wqe;if (!alloc_cpumask_var (&wqe->cpu_mask,GFP_KERNEL )) goto err;cpumask_copy (wqe->cpu_mask,cpumask_of_node (node)); - wq->wqes[node] = wqe; wqe->node = alloc_node; wqe->acct[IO_WQ_ACCT_BOUND ].max_workers = bounded; wqe->acct[IO_WQ_ACCT_UNBOUND].max_workers =
io_uring/net.c +2 -0
@@ -1001,6 +1001,8 @@ int io_send_zc(struct io_kiocb *req, unsigned int issue_flags) sock =sock_from_file (req->file);if (unlikely (!sock))return -ENOTSOCK ; +if (!test_bit (SOCK_SUPPORT_ZC , &sock->flags)) +return -EOPNOTSUPP ; msg.msg_name =NULL ; msg.msg_control =NULL ;
kernel/gcov/gcc_4_7.c +16 -2
@@ -30,6 +30,13 @@#define GCOV_TAG_FUNCTION_LENGTH 3 +/* Since GCC 12.1 sizes are in BYTES and not in WORDS (4B). */ +#if (__GNUC__ >=12 ) +#define GCOV_UNIT_SIZE 4 +#else +#define GCOV_UNIT_SIZE 1 +#endif +static struct gcov_info *gcov_info_head;/**
@@ -383,12 +390,18 @@ size_t convert_to_gcda(char *buffer, struct gcov_info *info) pos +=store_gcov_u32 (buffer, pos, info->version); pos +=store_gcov_u32 (buffer, pos, info->stamp); +#if (__GNUC__ >=12 ) +/* Use zero as checksum of the compilation unit. */ + pos +=store_gcov_u32 (buffer, pos,0 ); +#endif +for (fi_idx =0 ; fi_idx < info->n_functions; fi_idx++) { fi_ptr = info->functions[fi_idx];/* Function record. */ pos +=store_gcov_u32 (buffer, pos,GCOV_TAG_FUNCTION ); - pos +=store_gcov_u32 (buffer, pos,GCOV_TAG_FUNCTION_LENGTH ); + pos +=store_gcov_u32 (buffer, pos, +GCOV_TAG_FUNCTION_LENGTH *GCOV_UNIT_SIZE ); pos +=store_gcov_u32 (buffer, pos, fi_ptr->ident); pos +=store_gcov_u32 (buffer, pos, fi_ptr->lineno_checksum); pos +=store_gcov_u32 (buffer, pos, fi_ptr->cfg_checksum);
@@ -402,7 +415,8 @@ size_t convert_to_gcda(char *buffer, struct gcov_info *info)/* Counter record. */ pos +=store_gcov_u32 (buffer, pos,GCOV_TAG_FOR_COUNTER (ct_idx)); - pos +=store_gcov_u32 (buffer, pos, ci_ptr->num *2 ); + pos +=store_gcov_u32 (buffer, pos, + ci_ptr->num *2 *GCOV_UNIT_SIZE );for (cv_idx =0 ; cv_idx < ci_ptr->num; cv_idx++) { pos += store_gcov_u64(buffer, pos,
net/ipv4/tcp.c +1 -0
@@ -457,6 +457,7 @@ void tcp_init_sock(struct sock *sk)WRITE_ONCE (sk->sk_sndbuf,READ_ONCE (sock_net (sk)->ipv4.sysctl_tcp_wmem[1 ]));WRITE_ONCE (sk->sk_rcvbuf,READ_ONCE (sock_net (sk)->ipv4.sysctl_tcp_rmem[1 ])); +set_bit (SOCK_SUPPORT_ZC , &sk->sk_socket->flags);sk_sockets_allocated_inc (sk); }EXPORT_SYMBOL (tcp_init_sock);
net/ipv4/udp.c +1 -0
@@ -1620,6 +1620,7 @@ int udp_init_sock(struct sock *sk) {skb_queue_head_init (&udp_sk (sk)->reader_queue); sk->sk_destruct = udp_destruct_sock; +set_bit (SOCK_SUPPORT_ZC , &sk->sk_socket->flags);return 0 ; }EXPORT_SYMBOL_GPL (udp_init_sock);
sound/pci/hda/hda_codec.c +21 -20
57 lines not on this page · raw message